#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];
    int i,j;
    for(i=0;i<n;i++)
    {
        for(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(i=0;i<n;i++)
{
    d[i]=I;
    ve[i]=0;
}
d[src]=0;
for(int c=0;c<n-1;c++)
{
    int min=I,u=-1;
    for(int v=0;v<n;v++)
    {
        if(!ve[v]&&d[v]<=min)
        {
            min=d[v];
            u=v;
        }
}
if(u==-1)
break;
v[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]=d[u]+g[u][v];
}
}
for(i=0;i<n;i++)
{
    printf("%d",d[i]);
    if(i<n-1)
    printf(" ");
}
return 0;
}