
재현이는 $N$개의 정점으로 이루어진 트리를 가지고 있었다. 정점에는 $1$번부터 $N$번까지 번호가 매겨져 있고, 트리를 이루는 $N-1$개의 간선에는 그 간선이 잇는 두 정점 사이의 거리(양의 정수)가 저장되어 있었다. 재현이는 트리를 아끼는 만큼 넉넉한 메모리를 주고 싶어서, 모든 간선을 $N \times N$ 인접 행렬에 저장했다.
그런데 재현이와 인접 행렬을 모두 싫어하는 수찬이가 이 행렬에 플로이드-워셜 알고리즘을 돌려, 행렬의 모든 칸을 해당하는 두 정점 사이의 최단 거리로 바꿔 버렸다. 이제 재현이에게 남은 것은 모든 정점 쌍의 최단 거리를 담은 행렬뿐이다.
흉하게 변해 버린 트리를 본 재현이는 더 이상 트리에 넉넉한 메모리를 주고 싶지 않아, 트리를 인접 리스트로 저장하려고 한다.
수찬이가 플로이드-워셜을 돌려 만든 인접 행렬(즉, 모든 정점 쌍의 최단 거리 행렬)이 주어질 때, 원래 트리를 인접 리스트 형태로 복원하여 출력하여라. 입력으로 주어지는 행렬은 항상 어떤 트리로부터 만들어진 올바른 거리 행렬임이 보장된다.
첫째 줄에 트리의 정점 수 $N$이 주어진다. ($3 \le N \le 1024$)
다음 $N-1$개의 줄에는 정점 쌍 사이의 최단 거리가, 인접 행렬의 위쪽 삼각형(주대각선의 위·오른쪽 부분)만 순서대로 주어진다. 즉, 첫 번째 줄에는 정점 $1$과 $2, 3, \dots, N$ 사이의 거리가, 두 번째 줄에는 정점 $2$와 $3, 4, \dots, N$ 사이의 거리가, 일반적으로 $i$번째 줄에는 정점 $i$와 $i+1, i+2, \dots, N$ 사이의 거리가 주어진다.
모든 거리는 $15000$ 이하의 양의 정수이다.
$N$개의 줄에 걸쳐 트리를 인접 리스트 형태로 출력한다.
$i$번째 줄에는 정점 $i$와 직접 연결된 정점의 개수를 먼저 출력하고, 이어서 연결된 정점들의 번호를 오름차순으로 출력한다.