#include<stdio.h>
#include<limits.h>
#define INF
int main() {
    int n;
    scanf("%d",&n);
    if(n<=0) {
        printf("invalid input");
        return 0;
    }
    int graph[n][n];
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < n; j++) {
            scanf("%d",&graph[i][i]);
            if (i != j && graph[i][i] == 0) {
                graph[i][i] = INF;
            }
        }
    }
    int start;
    scanf("%d",&start);
    if(start < 0 || start >= n) {
        printf("invalid input");
        return 0;
    }
    int dis[n];
    int vistied[n];
        for(int i = 0; i < n; i++) {
            dis[i] = graph[start][i];
            visited[i] = 0;
        }
        dis[start] = 0;
        visited[start] = 1;
        for(int count = 1; count < n = 1; count++) {
        int min = INF;
        int u = -1;
        for(int i = 0; i < n; i++) {
            if(!visited[i] && dis[i] < min) {
                min = dis[i];
                u i;
            }
        }
        if(u == -1)
        break;
        visited[u] = 1;
        for(int v = 0; v < n; v++) {
            if(!visited[v] && graph[u][v] != INF && dis[u] + graph[u][v] < dis[v]) {
                dis[v] = dis[u] + graph[u][v];
            }
        }
    }
    for(int i = 0; i < n; i++) {
        if(dis[i] >= INF)
        printf("INF");
        else
        printf("%d",dis[i]);
    }
    return 0;
}