#include<iostream>
#include<algorithm>
using namespace std;
const int N=55,INF=1e9;
int arr[N][N];
int v;
void floyd()
{
for(int k=0;k<v;k++)
{
for(int i=0;i<v;i++)
{
for(int j=0;j<v;j++)
{
arr[i][j]=min(arr[i][j],arr[i][k]+arr[k][j]);
}
}
}
}
int main()
{
cin>>v;
for(int i=0;i<v;i++)
{
for(int j=0;j<v;j++)
{
if(i==j)
arr[i][j]=0;
else
arr[i][j]=INF;
}
}
for(int i=0;i<v;i++)
{
for(int j=0;j<v;j++)
{
int a;
cin>>a;
if(a!=0)
{
arr[i][j]=a;
}
}
}
floyd();
for(int i=0;i<v;i++)
{
for(int j=0;j<v;j++)
{
if(i==j)
cout<<0<<" ";
else
{
if(arr[i][j] > INF/2)
cout<<-1<<" ";
else
cout<<arr[i][j]<<" ";
}
}
cout<<endl;
}
return 0;
}