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