#include <stdio.h>
#include <assert.h>
#define TRUE 1
#define FALSE 0
#define MAX 10
void LeMatriz( int Mat[][MAX], int m, int n ) {
int i,j;
for ( i = 0; i < m; i++)
for ( j = 0; j < n; j++)
scanf("%d", &Mat[i][j]);
return;
}
/* Devolve TRUE sss V eh permutacao de 1,2,...,n. */
int EhPermutacao( int V[MAX], int n) {
int i, j, contraexemplo;
contraexemplo = FALSE;
for (i = 1; i <= n && contraexemplo == FALSE; i++) {
j=0;
while ( j<n && V[j]!=i )
j++;
if (j>=n)
contraexemplo = TRUE; /* i nao estah em V */
}
return ! contraexemplo; /*return (contraexemplo==FALSE);*/
}
int main()
{
int A[MAX][MAX], v[MAX];
int n;
int i, j;
int acheinaopermutacao;
scanf("%d", &n);
assert( n <= MAX );
LeMatriz( A, n, n );
acheinaopermutacao = FALSE;
for (i = 0; i < n; i++) {
/* testar coluna i */
for (j = 0; j < n; j++)
v[j] = A[j][i];
if ( !EhPermutacao( v, n) ) /* EhPermutacao( v, n) == FALSE */
acheinaopermutacao = TRUE;
/*testar linha i */
if ( !EhPermutacao( A[i], n) ) /* EhPermutacao( A[i], n) == FALSE */
acheinaopermutacao = TRUE;
}
if (acheinaopermutacao == TRUE)
printf("A matriz NAO eh um quadrado latino.\n");
else
printf("A matriz eh um quadrado latino.\n");
return 0;
}