import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;
//implements Runnable
public class Main{
static long md=(long)1e9+7;
static long Linf=Long.MAX_VALUE/2;
static int inf=Integer.MAX_VALUE/2;
static int N=100010;
static int n=0;
static int m=0;
static long ans=0;
static
class Edge{
int fr,to,nxt;
long val;
public Edge(int u,int v,long w){
fr=u;to=v;val=w;
}
}
static Edge[] e;
static int[] head;
static int cnt=0;
static void addEdge(int fr,int to,long val){
cnt++;
e[cnt]=new Edge(fr,to,val);
e[cnt].nxt=head[fr];
head[fr]=cnt;
}
static int[]