import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Queue; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int t = Integer.parseInt(br.readLine()); PrintWriter pw = new PrintWriter(System.out); for (int z = 0; z < t; z++) { String[] sa = br.readLine().split(" "); int n = Integer.parseInt(sa[0]); int m = Integer.parseInt(sa[1]); List> list = new ArrayList<>(n); for (int i = 0; i < n; i++) { list.add(new ArrayList<>()); } for (int i = 0; i < m; i++) { sa = br.readLine().split(" "); int a = Integer.parseInt(sa[0]) - 1; int b = Integer.parseInt(sa[1]) - 1; int c = Integer.parseInt(sa[2]); list.get(a).add(new Hen(b, c)); list.get(b).add(new Hen(a, c)); } Queue que = new ArrayDeque<>(); que.add(0); int[][] d = new int[2][n]; Arrays.fill(d[0], -1); Arrays.fill(d[1], -1); d[0][0] = 0; while (!que.isEmpty()) { int cur = que.poll(); int cx = cur / n; int cy = cur % n; for (Hen h : list.get(cy)) { if (h.c == 1) { if (cx == 0) { if (d[0][h.v] == -1) { que.add(h.v); d[0][h.v] = d[cx][cy] + 1; } } else { if (d[1][h.v] == -1) { que.add(n + h.v); d[1][h.v] = d[cx][cy] + 1; } } } else { if (cx == 0) { if (d[1][h.v] == -1) { que.add(n + h.v); d[1][h.v] = d[cx][cy] + 1; } } } } } if (d[0][n - 1] == -1) { if (d[1][n - 1] == -1) { pw.println("Unknown"); } else { pw.println("Different"); pw.println(d[1][n - 1]); } } else { if (d[1][n - 1] == -1) { pw.println("Same"); pw.println(d[0][n - 1]); } else { throw new RuntimeException(); } } } pw.flush(); br.close(); } static class Hen { int v, c; public Hen(int v, int c) { this.v = v; this.c = c; } } }