#include using namespace std; template type2 vector_reduce(vector& v,function fn,type2 initial){ int N=v.size(); type2 ans=initial; for(int i=0;i>N>>M>>K; vector> road(0,vector(3)); vector possible(N+1,true); vector next(N+1); vector mask(N+1); possible[0]=false; int a,b,c,d; for(int i=0;i>a>>b>>c; road.push_back({a,b,c}); road.push_back({b,a,c}); } for(int i=0;i>d; next=mask; for(int j=0;j<2*M;j++){ if(possible[road[j][0]] && d==road[j][2]){ next[road[j][1]]=true; } } possible=next; } function fn=[](int p,bool a){return p+(a?1:0);}; cout<