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