아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Fake Plastic Trees

시간 제한1초메모리 제한1024 MB

요약
앞서 만든 트리를 부분 트리로 재사용하면서 125개 이하의 균형 이진트리를 만들어, 그중 하나가 정확히 N개의 노드를 갖도록 구성한다.
난이도

어려움10점 중 8점

유형
트리, 수학, 그리디, 조합론
정답자
아직 제출이 없습니다

문제

트리는 재귀적인 구조이며, 다음 중 하나이다.

  • 빈 트리. 빈 트리는 −1-1로 표기하고 크기는 0이다.
  • 비어 있지 않은 트리. 비어 있지 않은 트리 TT는 두 트리의 쌍 (T1, T2)(T_1,\ T_2)로 표기한다. T1T_1을 TT의 왼쪽 서브트리, T2T_2를 TT의 오른쪽 서브트리라고 한다. T=(−1, −1)T = (-1,\ -1)이면 TT를 리프라고 한다. 리프의 크기는 1이고, 리프가 아닌 트리의 크기는 ∣T1∣+∣T2∣|T_1| + |T_2|이다. 여기서 ∣T1∣|T_1|은 T1T_1의 크기, ∣T2∣|T_2|는 T2T_2의 크기이다.

비어 있지 않은 트리 TT가 균형을 이루면 TT를 Fake Plastic Tree라고 한다. 구체적으로 T=(T1, T2)T = (T_1,\ T_2)일 때 ∣T1∣=∣T2∣|T_1| = |T_2| 또는 ∣T1∣=∣T2∣+1|T_1| = |T_2| + 1이면 TT는 Fake Plastic Tree이다.

컴퓨터 과학에서 트리는 자료 구조로 흔히 쓰이며 메모리에 저장된다. 처음에는 메모리에 트리가 없고, 가상의 널 포인터만 있다. 널 포인터는 빈 트리 −1-1에 대응한다. T1T_1과 T2T_2를 널 포인터나 기존 트리의 포인터로 정하면 트리를 메모리에 할당할 수 있다. 그러면 메모리에 T=(T1, T2)T = (T_1,\ T_2)가 추가되면서 구조가 확장된다. 포인터는 작은 정수로 표현할 수 있으므로 트리 전체를 명시적으로 저장할 필요가 없다.

형식적으로 메모리 MM은 귀납적으로 정의되는 구조이며, 처음에는 빈 트리 −1-1만 포함한다. (M={−1}M = \{-1\}.) 다음 연산으로 메모리를 확장할 수 있다. M←M∪{(T1, T2)}M \leftarrow M \cup \{(T_1,\ T_2)\}, 여기서 T1∈M, T2∈MT_1 \in M,\ T_2 \in M이다. 트리 TT가 ii번째 단계에서 삽입되면 TT는 인덱스 i−1i-1을 가진다. 인덱스 ii인 트리의 서브트리는 [−1, i−1][-1,\ i-1] 범위의 정수 쌍으로 나타낼 수 있다.

여러분의 과제는 다음 조건을 만족하는 메모리 MM을 구성하는 것이다.

  • MM의 모든 트리는 빈 트리이거나 Fake Plastic Tree이다.
  • MM은 비어 있지 않은 트리를 125개 이하로 가진다.
  • ∣T∣=N|T| = N인 트리 T∈MT \in M이 존재한다. NN은 정수이며 입력으로 주어진다.

입력

첫째 줄에 테스트 케이스의 수 TT가 주어진다. (1≤T≤2,0001 \leq T \leq 2,000)

다음 TT개 줄에 정수 NN이 하나씩 주어진다. NN은 여러분의 트리가 가져야 하는 리프의 수이다. (1≤N≤10181 \leq N \leq 10^{18})

출력

각 테스트 케이스마다 V+2V + 2개 줄을 출력한다. VV는 MM에 있는 비어 있지 않은 트리의 수이다. (1≤V≤1251 \leq V \leq 125)

첫째 줄에 정수 VV를 출력한다.

다음 VV개 줄에 두 정수 Li, RiL_i,\ R_i를 공백으로 구분해 출력한다. 이는 인덱스 ii인 트리의 왼쪽 서브트리와 오른쪽 서브트리의 인덱스이다. (−1≤Li, Ri≤i−1-1 \leq L_i,\ R_i \leq i - 1)

(V+2)(V+2)번째 줄에 NN개의 노드를 가진 트리의 인덱스 PP를 출력한다. (0≤P≤V−10 \leq P \leq V-1)

주어진 조건에서 답이 항상 존재함이 보장된다.

예제1

  1. 예제 1

    입력
    4
    1
    2
    3
    4
    
    예상 출력
    1
    -1 -1
    0
    3
    -1 -1
    -1 -1
    0 1
    2
    3
    -1 -1
    0 0
    1 0
    2
    5
    -1 -1
    0 0
    0 0
    2 1
    1 2
    3