#include<stdio.h>
#define  MAX 100
#define INF1000000

int main(){
    int n;
    if(scanf("%d",&n)!= 1|| n <=0|| n>MAX){
        printf("Invalid input");
        return 0;
    }
    int graph[MAX][MAX];
    int i,j;
    for(i=0;i<n;i++){
        for(j=0;j<n;j++){
            if(scanf("%d",&graph[i][j])!= 1){
                printf("Invalid input");
                return 0;
            }
        }
    }
    int dist[MAX],visited[MAX];
    for(i=0;i<n;i++){
        dist[i]=INF;
        visited[i]=0;
    }
    
    dis[src]=0;
    
    for(int count=0;count< n-1;count++){
        int min=INF, u= -1;
        for(int v=0;v<n;v++){
            if(!visited[v]&&dis[v] <=min){
                min=dist[v];
                u=v;
            }
        }
    }
        if(u== -1)
           break;
           
           visited[u]=1;
           for(int v=0;v<n;v++){
               if(!visited[v]&&graph[u][v]>0&&dist[u]+graph[u][v]){
                   dist[v]=dist[u]+graph[u][v];
               }
             }
             for(i=0;i<;i++){
                 printf("%d",dist[i]);
                 if(i<n-1)
                   printf(" ");
             }
             return 0;
}
             }