#include <fstream>
#include <vector>
using namespace std;
ifstream f("royfloyd.in");
ofstream g("royfloyd.out");
int main(){
int n, x;
f >> n;
vector<int> graph[n + 1];
vector<int> roy[n + 1];
for(int i = 0 ; i < n; i++){
for(int j = 0; j < n; j++){
f >> x;
graph[i].push_back(j);
roy[i].push_back(x);
}
}
for(int k = 0; k < n; k++){
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if( roy[i][k] + roy[k][j] < roy[i][j]){
roy[i][j] = roy[i][k] + roy[k][j];
}
}
}
}
for(int i = 0; i < n; i++){
for(int j= 0; j < n; j++){
g << roy[i][j] <<" ";
}
g << "\n";
}
return 0;
}