/*
*
* soon on twitch : ex3qute
*
* ax ah al
* kwxkwxkxkxwkxkwxkw
* dumnezeu sa o ierte
*/
#include <bits/stdc++.h>
using namespace std;
#define ull unsigned long long
#define ll long long
#define pb push_back
#define fastio ios_base::sync_with_stdio(0); cin.tie(nullptr);
const int MOD = 1e9+7;
int di[4]={0,0,-1,1};
int dj[4]={-1,1,0,0};
const string FILENAME = "cmlsc";
ifstream f(FILENAME + ".in");
ofstream g(FILENAME + ".out");
#ifndef exe
#define cin f
#define cout g
#endif
int a[101][101];
int dp[101][101];
signed main(){
int n;
cin >> n;
for(int i=1;i<=n;++i) {
for(int j=1;j<=n;++j) cin >> a[i][j];
}
for(int i=1;i<=n;++i) dp[i][i] = 0;
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j) {
if(a[i][j] > 0) dp[i][j] = a[i][j];
else if(i != j) dp[i][j] = INT_MAX;
}
}
for(int k=1;k<=n;++k) {
for(int i=1;i<=n;++i) {
for(int j=1;j<=n;++j ) {
if(dp[i][j] > dp[i][k] + dp[k][j]) {
dp[i][j] = dp[i][k] + dp[k][j];
}
}
}
}
for(int i=1;i<=n;++i, cout << '\n') {
for(int j=1;j<=n;++j) {
cout << dp[i][j] << ' ';
}
}
return 0;
}