void dijk(int sta)
{
FOR(i,1,n) dis[i]=inf;
dis[sta]=0;
priority_queue<Pair,vector<Pair>,greater<Pair> >q;
q.push(MP(dis[sta],sta));
while (!q.empty())
{
while (!q.empty()&&dis[q.top().se]!=q.top().fi) q.pop();
if (q.empty()) break;
int now=q.top().se;
q.pop();
for (auto i:a[now])
{
if (dis[now]+w[i]<dis[v[i]])
{
dis[v[i]]=dis[now]+w[i];
q.push(MP(dis[v[i]],v[i]));
}
}
}
}
void solve()
{
cin>>n>>m;
FOR(i,1,m)
{
int x,y,z;
cin>>x>>y>>z;
a[x].PB(i);
u[i]=x;
v[i]=y;
w[i]=z;
}
}