#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long LL; typedef unsigned long long ULL; #define MAX(a,b) ((a) > (b) ? (a) : (b)) #define MIN(a,b) ((a) < (b) ? (a) : (b)) #define MEM(a,b) memset((a),(b),sizeof(a)) const LL INF = 1000000007; const int N = 1e3+10; const double eps = 1e-12; int a[N][N]; int main() { int n; while (scanf("%d", &n) != EOF) { if (n == 0) break; int flag = 1; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { scanf("%d", &a[i][j]); } } for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { if (a[i][i] + a[j][j] != a[i][j] + a[j][i]) { flag = 0; break; } } if (flag == 0) break; } if (flag) puts("homogeneous"); else puts("not homogeneous"); } return 0; }