/*
#include <bits/stdc++.h>
using namespace std;
int parent[2001];
int findf(int x)
{
if(x==parent[x])
return x;
return parent[x]=findf(parent[x]);
}
void unionf(int x, int y)
{
int a=findf(x);
int b=findf(y);
parent[a]=b;
}
int main()
{
long long int poopkee=0;
int n, c;
scanf("%d %d", &n, &c);
for(int i=0; i<=2000; i++)
parent[i]=i;
int arr[2001][2];
for(int i=0; i<n; i++)
{
scanf("%d %d", &arr[i][0], &arr[i][1]);
}
vector<pair<int, pair<int, int> > > hahaha;
for(int i=0; i<n; i++)
{
for(int j=i; j<n; j++)
{
int x1=arr[i][0], x2=arr[j][0], y1=arr[i][1], y2=arr[j][1];
int oioi=((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
if(oioi>=c)
hahaha.push_back({oioi, {i, j}});
}
}
sort(hahaha.begin(), hahaha.end());
int top=0;
int cnt=0;
while(cnt!=n-1)
{
if(top>hahaha.size())
{
poopkee=-1;
break;
}
int x=hahaha[top].second.first, y=hahaha[top].second.second;
if (findf(x)!=findf(y))
{
cnt++;
int x1=arr[x][0], x2=arr[y][0], y1=arr[x][1], y2=arr[y][1];
int oioi=((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
poopkee+=oioi;
unionf(x, y);
}
top++;
}
printf("%lld", poopkee);
}*/
/*
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, p;
scanf("%d %d", &n, &p);
vector<pair<int, int> > poohaha;
for(int i=0;i<p;i++)
{
int a, b;
scanf("%d %d", &a, &b);
poohaha.push_back(make_pair(a, b));
}
}*/
/*
#include <bits/stdc++.h>
using namespace std;
int n, m;
long long int dp[5000][5000]={};
int doo(int x, int z, int y)
{
if(dp[x][y]!=0)
return dp[x][y];
if(x==1)
return 1;
long long k=0;
for(int i=z;i<x;i++)
{
int a=i, b=x-i;
if(a<=y)
{
k+=doo(b, a, y);
k%=123456789;
}
else
break;
}
if(x<=y)
k+=1;
return dp[x][y]=k;
}
int main()
{
scanf("%d %d", &n, &m);
doo(n, 1, m);
printf("%lld", dp[n][m]);
}*/
/*
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
scanf("%d", &n);
int dp[100001][4]={};
dp[1][0]=1;
dp[1][1]=1;
dp[1][2]=1;
dp[1][3]=1;
for(int i=2;i<=n;i++)
{
dp[i][0]=(dp[i-1][1]+dp[i-1][2]+dp[i-1][0])%9901;
dp[i][1]=(dp[i-1][0]+dp[i-1][2])%9901;
dp[i][2]=(dp[i-1][0]+dp[i-1][1])%9901;
dp[i][3]=(dp[i-1][0])%9901;
}
printf("%d", (dp[n][0]+dp[n][1]+dp[n][2])%9901);
}*/
/*
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
scanf("%d", &n);
int arr[101]={};
for(int i=1;i<=n;i++)
scanf("%d", &arr[i]);
int dp[101][3]={};
dp[1][1]=arr[1];
int ans=dp[1][1];
for(int i=2;i<=n;i++)
{
int a=max(dp[i-1][2], dp[i-1][1]);
dp[i][0]=max(a, dp[i-1][0]);
dp[i][1]=dp[i-1][0]+arr[i];
dp[i][2]=dp[i-1][1]+arr[i];
ans=max(ans, dp[i][0]);
ans=max(ans, dp[i][1]);
ans=max(ans, dp[i][2]);
}
printf("%d", ans);
}*/
/*
#include <bits/stdc++.h>
using namespace std;
long long int dp[70]={};
long long int dab(int x)
{
if(x==0)
return 0;
if(dp[x]!=-1)
return dp[x];
long long int ret=1;
for(int i=2;i<x;i++)
{
ret+=2*dab(x-i);
}
return dp[x]=ret;
}
int main()
{
memset(dp, -1, sizeof(dp));
int h;
dp[1]=1;
dp[2]=1;
dp[3]=3;
scanf("%d", &h);
printf("%lld", dab(h));
}*/
/*
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, m;
int result[5000][2]={};
int arr[101][101]={};
scanf("%d %d", &n, &m);
for(int i=1;i<=m;i++){
scanf("%d %d", &result[i][0], &result[i][1]);
arr[result[i][0]][result[i][1]]=1;
}
for(int k=1;k<=n;k++)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(arr[i][k]==1&&arr[k][j]==1)
arr[i][j]=1;
}
}
}
int poohaha=0;
for(int i=1;i<=n;i++)
{
int cnt=0;
for(int j=1;j<=n;j++)
{
if(arr[i][j]==1||arr[j][i]==1)
cnt++;
}
if(cnt==n-1)
{
poohaha++;
}
}
printf("%d", poohaha);
}
*/
#include <bits/stdc++.h>
using namespace std;
int n, m, k;
vector<pair<pair<int, int>, int > > road;
int main()
{
scanf("%d %d %d", &n, &m, &k);
int a, b, c;
for(int i=0;i<m;i++)
{
scanf("%d %d %d", &a, &b, &c);
road.push_back({{a, b}, c});
}
}