#include <fstream>
#define NMAX 105
#define INF 2000
using namespace std;
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
int N;
int mat[NMAX][NMAX];
int mato[NMAX][NMAX];
void Citire();
void RoyFloyd();
void Afisare();
int main()
{
Citire();
RoyFloyd();
Afisare();
return 0;
}
void Citire()
{
int i,j;
fin>>N;
for(i=1; i<=N; i++)
for(j=1; j<=N; j++)
{
fin>>mat[i][j];
if(mat[i][j] == 0)
mato[i][j] = INF;
else
mato[i][j] = mat[i][j];
}
}
void RoyFloyd()
{
int z, x, y;
for(z = 1; z <= N; z++)
for(x = 1; x <= N; x++)
for(y = 1; y <= N; y++)
if(x != y && mato[x][y] > mato[x][z] + mato[z][y])
{
mato[x][y] = mato[x][z] + mato[z][y];
}
}
void Afisare()
{
int i,j;
for(i=1; i<=N; i++)
{
for(j=1; j<=N; j++)
if(mato[i][j] == INF)
fout<<"0 ";
else
fout<<mato[i][j]<<" ";
fout<<'\n';
}
}