#include <fstream>
#define DMAX 105
#define INF 1000000000
using namespace std;
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
int A[DMAX][DMAX],N,tata[DMAX][DMAX];
void citire();
void afisare();
int main()
{int x,u,v;
citire();
for(x=1;x<=N;x++)
for(u=1;u<=N;u++)
for(v=1;v<=N;v++)
if(A[u][v]>A[u][x]+A[x][v])
{A[u][v]=A[u][x]+A[x][v];
tata[u][v]=tata[x][v];
}
afisare();
return 0;
}
void citire()
{int i,j;
fin>>N;
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
{fin>>A[i][j];
if(!A[i][j]&&i!=j)
A[i][j]=INF;
tata[i][j]=i;
}
}
void afisare()
{int i,j;
for(i=1;i<=N;i++)
{for(j=1;j<=N;j++)
{
if(A[i][j]==INF)
A[i][j]=0;
fout<<A[i][j]<<' ';
}
fout<<'\n';
}
}