#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
typedef long long ll;
typedef unsigned long long ull;
const ll MAXN=1e18;
const int MOD=1e6;
struct Graph{
struct Edge{ int next,to,w;};
Edge edge[8000005];
int head[10000000];
int cnt=2;//从2开始,方便异或操作
void add(int u,int v,int w){
edge[cnt].to=v;
edge[cnt].w=w;
edge[cnt].next=head[u];
head[u]=cnt;
++cnt;
return;
}
void update(int pos,int w){
edge[pos^1].w=w;//异或操作修改反边
edge[pos].w=w;
}
}G;
int main(){
int n,m,u,v,w;
bool flag;
cin>>n>>m>>flag;
while(m--){
cin>>u>>v>>w;
G.add(u,v,w);
if(flag==0) G.add(v,u,w);
}
int id;
for(int i=1;i<=n;++i){
id=G.head[i];
while(id){
cout<<i<<' '<<G.edge[id].to<<' '<<G.edge[id].w<<'\n';
id=G.edge[id].next;
}
}
return 0;
}