#include using namespace std; #include using namespace atcoder; using mint=atcoder::modint998244353; #define int long long #define rep(i,n) for(int i=0;i<(n);i++) #define rng(i,l,r) for(int i=(l);i<(r);i++) #define rrep(i,n) for(int i=(n)-1;i>=0;i--) #define rrng(i,l,r) for(int i=(r)-1;i>=(l);i--) #define all(x) (x).begin(),(x).end() #define pb push_back #define fi first #define se second struct fast_io{fast_io(){cin.tie(nullptr)->sync_with_stdio(false);}}_; template bool chmax(T &a,T b){return (a bool chmin(T &a,T b){return (a>b)?a=b,1:0;} templateusing pqmin=priority_queue,greater>; void solve(); signed main(){ int T;cin>>T; while(T--){ solve(); } } void solve(){ int N,M;cin>>N>>M; vector>> g(N); rep(i,M){ int a,b,c;cin>>a>>b>>c; a--,b--; g[a].pb({b,c}); g[b].pb({a,c}); } vector d0(N,1e18),d1(N,1e18); { queue q; d0[0]=0; q.push(0); while(q.size()){ int p=q.front();q.pop(); for(auto&&[e,c]:g[p]){ if(c==1){ if(chmin(d0[e],d0[p]+1)){ q.push(e); } } } } } { queue q; d1[N-1]=0; q.push(N-1); while(q.size()){ int p=q.front();q.pop(); for(auto&&[e,c]:g[p]){ if(c==1){ if(chmin(d1[e],d1[p]+1)){ q.push(e); } } } } } if(d0[N-1]!=1e18){ cout<<"Same"<