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