#include <bits/stdc++.h>
using namespace std;

int g[2010][2010];

struct node
{
	int u, v, w;
	node(){}
	node(int u, int v, int w) : u(u), v(v), w(w){}
};

int main()
{
	ios::sync_with_stdio(false);
	int tag = 0, n;
	while (cin >> n) {
		if (tag) puts("");
		tag = 1;
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= n; j++){
				cin >> g[i][j];
			}
		}
		vector<node> ans;
		for (int i = 1; i <= n; i++) {
			for (int j = i + 1; j <= n; j++) {
				int tag = 1;
				for (int k = 1; k <= n; k++) {
					if (i == k || k == j) continue;
					if (g[i][k] + g[k][j] == g[i][j]) {
						tag = 0;
						break;
					}
				}
				if (tag) ans.push_back(node(i, j, g[i][j]));
			}
		}
		for (int i = 0; i < n; i++) {
			if (i < ans.size()) 
				printf("%d %d %d\n", ans[i].u, ans[i].v, ans[i].w);
			else 
				printf("%d %d %d\n", ans[0].u, ans[0].v, ans[0].w);
		}
	}
	return 0;
}
