이진 트리의 사전순 번호

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

문제

루트가 있는 트리에서 모든 정점이 자식을 00개, 11개 또는 22개 가지며, 자식이 있을 때 그 자식이 왼쪽 자식인지 오른쪽 자식인지 구분되는 트리를 이진 트리라고 하자. 따라서 자식이 하나뿐인 정점도 그 자식이 왼쪽인지 오른쪽인지에 따라 서로 다른 트리가 된다.

트리의 높이는 루트에서 어떤 잎까지 가는 경로 중 가장 긴 경로에 놓인 정점의 개수이다. 빈 트리의 높이는 00이다.

이진 트리들 사이에는 다음과 같은 사전순 순서가 정의된다. 트리 AA가 트리 BB보다 사전순으로 작다는 것은 다음 중 하나가 성립하는 경우이다.

  • AA의 높이가 BB의 높이보다 작다.
  • AABB의 높이가 같고, 다음 중 하나가 성립한다.
    • AA의 왼쪽 부분 트리가 BB의 왼쪽 부분 트리보다 사전순으로 작다.
    • AABB의 왼쪽 부분 트리가 같고, AA의 오른쪽 부분 트리가 BB의 오른쪽 부분 트리보다 사전순으로 작다.

어떤 정점에 왼쪽 자식이 없으면 그 정점의 왼쪽 부분 트리는 빈 트리로 본다. 오른쪽 자식이 없는 경우도 마찬가지이다.

두 트리 AABB가 서로 다르고 AABB보다 사전순으로 작지 않으면, AABB보다 사전순으로 크다.

이 순서에 따라 모든 이진 트리에 번호를 매긴다. 정점이 하나뿐인 트리의 번호는 11이다. 주어진 트리의 번호를 10000000001\,000\,000\,000으로 나눈 나머지를 구하여라.

입력

첫째 줄에 트리의 개수 tt (1t10001 \le t \le 1\,000)가 주어진다.

이어서 tt개의 트리 설명이 주어진다. 각 트리 설명의 첫째 줄에는 정점의 개수 nn (1n20001 \le n \le 2\,000)이 주어진다. 정점은 11번부터 nn번까지 번호가 매겨져 있으며, 11번 정점이 루트이다.

그다음 nn개의 줄에 각 정점의 자식 정보가 주어진다. ii번째 줄에는 두 정수 lil_irir_i가 주어지며, 각각 ii번 정점의 왼쪽 자식과 오른쪽 자식의 번호이다. ii번 정점에 왼쪽 자식이 없으면 li=1l_i = -1이고, 오른쪽 자식이 없으면 ri=1r_i = -1이다.

출력

정확히 tt개의 줄을 출력한다. ii번째 줄에는 ii번째 트리의 번호를 10000000001\,000\,000\,000으로 나눈 나머지를 출력한다.