#include using namespace std; vector BFS(vector> &Graph,int start){ int N = Graph.size(); vector ret(N,-1); queue Q; ret.at(start) = 0,Q.push(start); while(Q.size()){ int pos = Q.front(); Q.pop(); for(auto to : Graph.at(pos)){ if(ret.at(to) != -1) continue; ret.at(to) = ret.at(pos)+1; Q.push(to); } } return ret; } int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); int T; cin >> T; while(T--){ int N,M; cin >> N >> M; vector> Graph(N); vector> diff; for(int i=0; i> u >> v; u--; v--; int w; cin >> w; if(w == 2){diff.push_back({u,v}); continue;} Graph.at(u).push_back(v); Graph.at(v).push_back(u); } auto dist1 = BFS(Graph,0),dist2 = BFS(Graph,N-1); if(dist1.at(N-1) != -1) cout << "Same\n" << dist1.at(N-1) << "\n"; else{ int answer = 1001001001; for(auto [u,v] : diff){ if(dist1.at(u) != -1 && dist2.at(v) != -1) answer = min(answer,dist1.at(u)+dist2.at(v)+1); swap(u,v); if(dist1.at(u) != -1 && dist2.at(v) != -1) answer = min(answer,dist1.at(u)+dist2.at(v)+1); } if(answer > 1e9) cout << "Unknown\n"; else cout << "Different\n" << answer << "\n"; } } }