달러와 유로

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

월레스는 잘 알려진 갱스터, 진짜배기 G입니다. 여느 갱스터처럼 그는 보석을 사는 데 즐겨 쓰는 큰돈을 가지고 있습니다. 안전을 위해 그는 돈을 지갑 하나에 몰아넣지 않고 여러 지갑에 나누어 둡니다. 이제 월레스는 동료들과 함께 시내로 놀러 나가려고 합니다.

그는 지갑의 약 절반만 챙겨 가고 싶지만, 동시에 충분한 돈을 지니고 싶어 합니다. 좀 더 정확히 말하면, 월레스는 2n12n - 1개의 지갑을 가지고 있고, 각 지갑에는 얼마간의 달러와 얼마간의 유로가 들어 있습니다. 그는 나들이에 정확히 nn개의 지갑을 챙기려 하는데, 챙긴 nn개 지갑에 든 달러의 합이 전체 2n12n - 1개 지갑에 든 달러 합의 절반 이상이고, 챙긴 nn개 지갑에 든 유로의 합도 전체 지갑에 든 유로 합의 절반 이상이 되도록 하고 싶습니다.

월레스는 돈 버는 법을 알고, 당신은 프로그래밍을 압니다. 무엇을 해야 할지 이제 아시겠죠.

입력

입력의 첫 줄에는 데이터 집합의 개수를 나타내는 정수 tt가 주어집니다. 이어서 각 데이터 집합의 설명이 주어집니다.

각 데이터 집합의 첫 줄에는 정수 nn (1n5000001 \le n \le 500\,000)이 주어지며, 이는 월레스가 2n12n - 1개의 지갑을 가지고 있음을 뜻합니다. 다음 2n12n - 1개의 줄에는 각 지갑의 정보가 주어집니다. 각 줄에는 두 정수 did_i, eie_i (0di,ei1090 \le d_i, e_i \le 10^9)가 있으며, 이는 ii번째 지갑에 did_i달러와 eie_i유로가 들어 있음을 뜻합니다.

모든 데이터 집합에 대한 nn의 합은 25000002\,500\,000을 넘지 않는다고 가정해도 됩니다.

출력

각 데이터 집합에 대한 답을 차례대로 출력합니다.

조건을 만족하는 nn개의 지갑을 항상 고를 수 있음이 알려져 있습니다. 답을 유일하게 정하기 위해, 월레스가 다음의 고정된 방법으로 지갑을 고른다고 가정합니다.

  1. 입력에 주어진 순서대로 지갑에 1,2,,2n11, 2, \ldots, 2n - 1의 번호를 매깁니다.
  2. 지갑을 달러가 많은 순으로 정렬합니다. 달러가 같으면 유로가 많은 순으로, 그래도 같으면 지갑 번호가 작은 순으로 정렬합니다.
  3. 이 순서에서 첫 번째 지갑을 챙깁니다.
  4. 남은 2n22n - 2개의 지갑을 같은 순서로 두 개씩 짝지어(2번째와 3번째, 4번째와 5번째, ...) 묶습니다. 각 짝에서는 유로가 더 많은 지갑을 챙깁니다. 유로가 같으면 달러가 더 많은 지갑을, 그래도 같으면 지갑 번호가 더 작은 지갑을 챙깁니다.

이렇게 하면 정확히 nn개의 지갑이 선택되고, 두 조건이 항상 만족됩니다.

각 데이터 집합마다 두 줄을 출력합니다. 첫 줄에는 Yo를 출력합니다. 둘째 줄에는 선택한 nn개의 지갑 번호를 오름차순으로 공백 하나로 구분하여 출력합니다.