#include <bits/stdc++.h>
//#pragma GCC target("avx2")
#define int long long
//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>
//#pragma GCC optimize("O3")
//#pragma GCC optimize("Ofast")
//using namespace __gnu_pbds;
using namespace std;
//ofstream fout("date.out");
ifstream fin("royfloyd.in");
ofstream fout("royfloyd.out");
//template <class T>
//using Tree =
// tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef long double ld;
int n;
int dist[105][105];
int dp[105][105];
void solve()
{
fin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
fin>>dist[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
dp[i][j]=(dist[i][j]);
for(int z=1;z<=n;z++)
for(int x=1;x<=n;x++)
for(int y=1;y<=n;y++)
dp[x][y]=min(dp[x][y],dp[x][z]+dp[z][y]);
for(int i=1;i<=n;i++,fout<<'\n')
for(int j=1;j<=n;j++)
fout<<dp[i][j]<<' ';
}
signed main()
{
cin.tie(0)->sync_with_stdio(0);
int t=1;
//fin>>t;
while(t--)
solve();
return 0;
}