#include<iostream>
#include<vector>
#include<climits>
using namespace std;

void solve(vector<vector<int>>&graph,int n){
    for(int k=0;k<n;k++){
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                if(graph[k][j]!=999 && graph[i][k]!=999 
                   && graph[i][j] > graph[i][k] + graph[k][j]){
                    graph[i][j] = graph[i][k] + graph[k][j];
                }
            }
        }
    }
}

int main(){
    int n;
    cin>>n;
    vector<vector<int>>graph(n,vector<int>(n));

    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            cin>>graph[i][j];
        }
    }

    solve(graph,n);

    // ---- Corrected Output ----
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            if(graph[i][j] == "INF")
                cout << "999" << " ";
            else
                cout << graph[i][j] << " ";
        }
        cout << endl;
    }
}