#include<bits/stdc++.h>
using namespace std;
#define int long long
int x,y,z;
const int maxn=4000050;
struct node
{
int nex,to,w;
} e[maxn];
int head[maxn];
int n,m,flag=1;
int cnt;
void add(int st,int to,int val)
{
e[cnt].w=val;
e[cnt].to=to;
e[cnt].nex=head[st];
head[st]=cnt++;
}
signed main()
{
scanf("%d %d %d",&n,&m,&flag);
memset(head,-1,sizeof head);
for(int i=1; i<=m; i++)
{
scanf("%d %d %d",&x,&y,&z);
add(x,y,z);
if(flag==0)
{
add(y,x,z);
}
}
for(int i=1; i<=n; i++)
{
bool ret=0;
for(int j=head[i]; ~j ; j=e[j].nex)
{
printf("%d %d %d\n", i , e[j].to , e[j].w);
ret=1;
}
if(ret==0)
{
printf("\n");
}
}
return 0;
}