#include #include using namespace std; using i32 = int; using i64 = long long; using i128 = __int128_t; using f64 = double; using p2 = pair; using p3 = tuple; void _main(); int main() { cin.tie(0); ios::sync_with_stdio(false); cout << fixed << setprecision(18); _main(); } void _main() { i64 tt; cin >> tt; for (;tt--;) { i64 n, m; cin >> n >> m; vector> g(n); for (i64 i = 0; i < m; i++) { i64 a, b, c; cin >> a >> b >> c; a--, b--; g[a].push_back({b, c}); g[b].push_back({a, c}); } vector> dp(n, vector(2, 1e18)); dp[0][0] = 0; queue que; que.push({0, 0}); while (!que.empty()) { auto [i, j] = que.front(); que.pop(); for (auto [ni, c] : g[i]) { if (c == 1) { if (dp[ni][j] > dp[i][j] + 1) { dp[ni][j] = dp[i][j] + 1; que.push({ni, j}); } } else { if (j == 0 && dp[ni][1] > dp[i][0] + 1) { dp[ni][1] = dp[i][0] + 1; que.push({ni, 1}); } } } } if (dp[n - 1][0] < 1e18) { cout << "Same\n"; cout << dp[n - 1][0] << "\n"; } else if (dp[n - 1][1] < 1e18) { cout << "Different\n"; cout << dp[n - 1][1] << "\n"; } else { cout << "Unknown\n"; } } }