unionFind d('m',2d5); ll@t; rep(t){ ll@n,@m,@(a--,b--,c)[m]; d.init(n); rep(i,m){ if(c[i]==1){ d(a[i],b[i]); } } if(d(0)==d(n-1)){ int u[m],v[m],l=0; rep(i,m){ if(c[i]==1){ u[l]=a[i]; v[l]=b[i]; ++l; } } graph g; g.setEdge(n,l,u,v); wt("Same"); wt(g.getDist(0,n-1)); }else{ int u[2m],v[2m],l=0; rep(i,m){ if(c[i]==1){ u[l]=a[i]; v[l]=b[i]; ++l; u[l]=b[i]; v[l]=a[i]; ++l; }else{ if(d(a[i])==d(0)&&d(b[i])==d(n-1)){ u[l]=a[i]; v[l]=b[i]; ++l; } if(d(b[i])==d(0)&&d(a[i])==d(n-1)){ u[l]=b[i]; v[l]=a[i]; ++l; } } } graph g; g.setDirectEdge(n,l,u,v); ll z=g.getDist(0,n-1); if(z<0){ wt("Unknown"); }else{ wt("Different"); wt(z); } } }