#include<iostream>
#include<vector>
using namespace std;
struct edge{
int to,w;
};
int n,m;vector<edge>g[105];//n表示有几个点,m表示有几条边,g[105]为一个二维数组
int main(){
cin>>n>>m;
for(int i=0;i<m;i++){
int u,v,w;
cin>>u>>v>>w;//读入起点和终点以及权值
g[u].push_back(edge{v,w});
g[v].push_back(edge{u,w});
}
int now;
cin>>now;
for(int i=0;i<g[now].size();i++)
cout<<g[now][i].to<<" "<<g[now][i].w<<endl;
return 0;
}