#include using namespace std; using ll=long long; int main(){ cin.tie(nullptr); ios::sync_with_stdio(false); int n,m; ll k; cin>>n>>m>>k; ll c=k; vector>> graph(n); for(int i=0;i>u>>v>>t; c=gcd(c,2*t); u--;v--; graph[u].push_back(make_pair(t,v)); graph[v].push_back(make_pair(t,u)); } //cout< depth(n,-1); vector d(n,-1); d[0]=0; auto dfs=[&](auto dfs,int v,ll val,int par,int dep)->void{ depth[v]=dep; d[v]=val; for(auto[t,u]:graph[v]){ if(par==u)continue; if(d[u]==-1){ dfs(dfs,u,(val+t)%k,v,dep+1); }else{ if(depth[u] seen(n); auto dfs=[&](auto dfs,int v,ll val)->void{ seen[v]=true; if(v==n-1){ cout<