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;
	}   
}