#include<stdio.h>
#include<limits.h>
#include<stdbool.h>

#define MAX 100
#define INF INT_MAX

void dijkstra(int n,int graph[MAX][MAX],int start){
    int dist[MAX];
    bool visited[MAX];
    
    for(int i=0; i<n; i++)
    {
        dist[i] =INF;
        visited[i]= false;
    }
    dist[start]=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]=true;
        
        for(int v=0; v<n;v++){
            if(!visited[v]&&graph[u][v]!=0&&dist[u]!=INF && dist[u] +graph[u][v]<dist[v]){
                dist[v]+dist[u]+graph[u][v];
            }
        }
    }
    for(int i=0;i<n;i++){
        if(dist[i]==INF)
        printf("INF");
        else
        printf("%d",dist[i]);
        
    }
    printf("\n");
    
    }
    int main(){
        int n;
        scanf("%d",&n);
        if(n<0){
            printf("Invalid input\n");
            return 0;
        }
        int graph[MAX][MAX];
        for(int i=0;i<n;i++){
            scanf("%d",&graph[i][j]);
        }
    }
    int s;
    scanf("%d",&s);
    if(s<0||s>=n){
        printf("Invalid input\n");
        return 0;
    }
    dijkstra(n,graph s);
    return 0;
}