#include<stdio.h>
#include<limits.h>

int main() {
    int n;
    scanf("%d",&n);

    if(n < 0  || n > 100) {
        printf("InvaIid input");
        return 0;
    }
    int matrix[100][100]; 

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (scanf("%d", &matrix[i][j] != matrix[i][j] < 0 || matrix[i][j] > 100000){
                printf("Invalid input");
                return 0;
            }
        }
    }

    int s;
    scanf("%d", &s);

    if (s < 0 || s >= n){
        printf("Invalid input");
        return 0;
    }
    
    int dist[100], visited[100];
    
    for (int i = 0; i < n; i++){
        dist[i] = INT_MAX;
        visited[i] = 0;
    }
    dist[s] = 0;
    
    for (int count = 0; count < n - 1; count ++) {
        int min = INT_MIN, u = -1;
         
        for (int i = 0; i < n; i++){
            if (!visited[i] && dist[i] <= min) {
                min = dist[i];
                u = i;
                
            }
        }
        
        if (u == -1) break;
        
        visited = 1;
        
        for (int v = 0; v < n; v++) {
            if (!visited[v] && matrix[u][v] > 0 && dist[u] != INT_MAX && dist[u] + matrix[u][v] < dist[v]) {
                dist[u] = dist[u] + matrix[u][v];
            }
        }
    }
    for (int i = 0; i < n; i++0 {
        if (didit[i] == INT_MAX)
            printf("-1 ");
        else
            printf("%d ", dist[i]);
    }
    return 0;
}