이웃한 도시

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

문제

도로 지도에는 모든 도시 쌍 사이의 최단 경로 길이를 담은 표가 함께 주어진다. 모든 도로는 양방향이므로 이 표는 대칭이며, 어떤 도시에서 자기 자신까지의 거리는 00이다.

이 도시들에는 다음과 같은 특별한 성질이 있다. 도시 AA에서 도시 BB까지의 최단 거리가 AA에서 CC까지의 최단 거리와 CC에서 BB까지의 최단 거리를 더한 값과 같다면, AA에서 BB로 가는 어떤 최단 경로는 도시 CC를 지난다.

두 도시 AABB는, 최단 경로 위에서 둘 사이에 놓이는 다른 도시가 하나도 없을 때 서로 이웃한 도시라고 부른다. 즉 AA, BB와 다른 도시 CC 가운데

dist(A,B)=dist(A,C)+dist(C,B)\text{dist}(A, B) = \text{dist}(A, C) + \text{dist}(C, B)

를 만족하는 CC가 존재하지 않을 때이다.

거리 표가 주어질 때, 이웃한 도시 쌍을 모두 찾아라.

프로그램은 표준 입력에서 거리 표를 읽어 이웃한 도시 쌍을 모두 찾고, 그 결과를 표준 출력에 쓴다.

입력

첫째 줄에 도시의 수 nn (1n2001 \le n \le 200)이 주어진다. 도시는 11번부터 nn번까지 번호가 매겨져 있다.

이어지는 nn개의 줄에는 각각 200200 이하의 음이 아닌 정수 nn개가 공백 하나로 구분되어 주어진다. 그중 ii번째 줄의 jj번째 정수는 도시 ii와 도시 jj 사이의 최단 거리이다. 대각선 값은 00이고 표는 대칭이다.

출력

이웃한 도시 쌍을 한 줄에 하나씩 모두 출력한다. 한 쌍에서 두 도시의 번호는 작은 수부터 오름차순으로, 공백 하나로 구분해 출력한다. 같은 쌍은 한 번만 출력한다.

출력하는 줄들은 쌍 (a,b)(a, b)가 쌍 (c,d)(c, d)보다 먼저 오도록 정렬한다. 여기서 먼저 온다는 것은 a<ca < c이거나, a=ca = c이면서 b<db < d인 경우를 뜻한다.

이웃한 도시 쌍이 하나도 없으면 아무것도 출력하지 않는다.