#include<cstdio>
#include<cstring>
#define Maxsize 55
#define Max 999999
using namespace std;
int n;
int dis[Maxsize][Maxsize];
int vis[Maxsize];
void Floyd()
{
for(int k=0; k<n; k++)
{
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
if(dis[i][j]>(dis[i][k]+dis[k][j]))
{
dis[i][j]=dis[i][k]+dis[k][j];
}
}
}
}
}
int main()
{
scanf("%d",&n);
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
scanf("%d",&dis[i][j]);
if(dis[i][j]==0&&i!=j)
dis[i][j]=Max;
}
}
Floyd();
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
if(i!=j&&dis[i][j]==Max)
printf("-1 ");
else
printf("%d ",dis[i][j]);
}
printf("\n");
}
return 0;
}