#include <iostream>
#include <fstream>
#define Max_N 105
using namespace std;
int n,v[Max_N][Max_N];
ifstream f("royfloyd.in");
ofstream g("royfloyd.out");
void citire()
{
f>>n;
for(int i = 1 ; i <= n ; i++)
for(int j = 1 ; j <= n ; j++)
f>>v[i][j];
}
void roy_floyd()
{
for(int k = 1 ; k <= n ; k++)
for(int i = 1 ; i <= n ; i++)
for(int j = 1 ; j <= n ; j++)
if(v[i][k] && v[k][j] && (v[i][j] > v[i][k] + v[k][j] || !v[i][j]) && i != j)
v[i][j] = v[i][k] + v[k][j];
}
void print()
{
for(int i = 1 ; i <= n ; i++)
{
for(int j = 1 ; j <= n ; j++)
g<<v[i][j]<<' ';
g<<'\n';
}
}
int main()
{
citire();
roy_floyd();
print();
return 0;
}