#include<stdio.h>
#define M 100
#define I 1000000
int main()
{
    int d[M],ve[M];
    int n;
    if(scanf("%d",&n)!=1||n<=0||n>M)
    {
        printf("Invalid input");
        return 0;
    }
    int g[M][M];
    for(int i=0;i<n;i++)
    {
        for( int j=0;j<n;j++){
            if(scanf("%d",&g[i][j])!=1){
                printf("Invalid input");
                return 0;
            }
            
        }
    }
    int src;
    if(scanf("%d",&src)!=1||src<0||src>=n)
    {
        printf("Invalid input");
        return 0;
    }
    for(int i=0;i<n;i++){
        d[i]=1;
        ve[i]=0;
    }
    d[src]=0;
    for(int c=0;c<n-1;c++)
    {
        int min=l,u=-1;
        for(int v=0;v<n;v++){
            if(!ve[v]&&d[v]<=min)
            {
                min=d[v];
                u=v;
            }
        }
        if(u==-1)
        break;
        ve[u]=1;
        for(int v=0;v<n;v++){
            if(!ve[v]&&g[u][v]>0&&d[u]+g[u][v]<d[v])
            d[v]=s[u]+g[u][v];
        }
    }
    for(int i=0;i<n;i++){
        printf("%d",d[i]);
        if(i<n-1)
        printf(" ");
    }
    return 0;
}