//自己能到自己,则表示这个点在环上;
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
int mat[31][31],n,m;
int main()
{
int a,b,i,j,k,cas=0;
while(scanf("%d",&m)!=EOF)
{
memset(mat,0,sizeof(mat));
for(i=n=1;i<=m;i++){
scanf("%d%d",&a,&b);
mat[a+1][b+1]=1;
n=max(n,max(a+1,b+1));
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
for(k=1;k<=n;k++){
mat[j][k]+=mat[j][i]*mat[i][k];
}
}
}
for(i=1;i<=n;i++){
if(mat[i][i]){
mat[i][i]=-1;
for(j=1;j<=n;j++){
for(k=1;k<=n;k++){
if(mat[j][i]&&mat[i][k])
mat[j][k]=-1;
}
}
}
}
printf("matrix for city %d\n",cas++);
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)
printf(" %d",mat[i][j]);
printf("\n",mat[i][j]);
}
}
return 0;
}