만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

동전

시간 제한5초메모리 제한512 MB

요약
각 묶음에 동전 두 개가 있고, 두 번째 동전은 같은 묶음의 첫 번째 동전과 함께만 고를 수 있습니다. 정확히 k개를 고를 때의 최대 합을 k=1부터 2n까지 구합니다.
난이도

보통10점 중 7점

유형
그리디, 정렬, 동적 계획법
정답자
아직 제출이 없습니다

문제

동전 묶음이 nn개 있고, ii번째 묶음에는 가치가 각각 aia_i, bib_i인 동전 두 개가 들어 있다. 이 중에서 동전을 정확히 kk개 고르려고 한다. 단, 제약이 하나 있다. ii번째 묶음의 두 번째 동전(가치 bib_i)은 같은 묶음의 다른 동전을 함께 고를 때에만 고를 수 있다. 즉, ii번째 묶음에서는 다음 중 하나를 고를 수 있다.

  • 두 동전을 모두 고르지 않는다.
  • 가치 aia_i인 동전만 고른다.
  • 두 동전을 모두 고른다.

정확히 kk개의 동전을 고를 때 가치의 합의 최댓값을 f(k)f(k)라고 하자.

f(1),f(2),…,f(2n)f(1), f(2), \ldots, f(2n)의 값을 구하라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 첫 줄에는 테스트 케이스의 개수 TT (1≤T≤901 \le T \le 90)가 주어진다.

각 테스트 케이스의 첫 줄에는 동전 묶음의 개수 nn (1≤n≤1000001 \le n \le 100000)이 주어진다.

이후 nn개의 줄에 각각 두 정수 aia_i, bib_i (1≤ai,bi≤100001 \le a_i, b_i \le 10000)가 주어지며, 이는 해당 묶음의 동전 가치이다.

모든 테스트 케이스에 대한 nn의 합은 21000002100000을 넘지 않는다.

출력

각 테스트 케이스마다 2n2n개의 정수를 한 줄에 출력한다. 출력할 값은 f(1),f(2),…,f(2n)f(1), f(2), \ldots, f(2n)이다. 연속된 정수는 공백 한 칸으로 구분한다.

예제1

  1. 예제 1

    입력
    2
    3
    1 2
    1 4
    4 2
    2
    1 3
    3 2
    
    예상 출력
    4 6 9 11 12 14
    3 5 7 9