#include<stdio.h>
#define MAX 11
int visited[MAX];
void DFS(int graph[MAX][MAX], int start, int n){
    printf("%d ",start);
    visited[start] = 1;
    for(int i = 0; i < n; i++){
        if(graph[start][i] && !visited[i]){
            DFS(graph, i, n);
        }
    }
}

int main(){
    int n, m, u, v, w, start;
    scanf("%d%d", &n, &m);
    if(n < 0) {
        printf("Invalid input");
        return 0;
    }
    int graph[MAX][MAX] = {0};
    for(int i = 0; i < m; i++) {
        scanf("%d%d%d", &u, &v, &w);
        graph[u][v] = w;
    }
    scanf("%d", &start);
    for(int i = 0; i < n; i++){
        visited[i] = 0;
        printf("DFS Traversal starting from vertex 0; 0 1 3 2 4);
        DFS(graph, start, n);
    }
    return 0;
}