#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define ll long long #define forn(i,n) for(int i=0;i using namespace std; int n, m; struct Road{ int x, y, w; void read(){ scanf("%d%d%d", &x, &y, &w); } }rds[300005]; int dsu[300005]; int gp(int u){ if (!dsu[u]) return u; return dsu[u] = gp(dsu[u]); } int cnt; void bind(int u,int v){ u = gp(u); v = gp(v); if (u != v){ --cnt; dsu[v] = u; } } void solve(){ cin >> n >> m; forn(i, m)rds[i].read(); cnt = n - 1; memset(dsu, 0, sizeof(dsu)); forn(i, m){ bind(rds[i].x, rds[i].y); } if (cnt){ cout << 0 << endl; return; } int nw = 0; for (int pos = 30; pos >= 0; --pos){ cnt = n - 1; memset(dsu, 0, sizeof(dsu)); nw ^= 1 << pos; forn(i, m){ if (!cnt)break; if (((rds[i].w&nw)^nw) < (1 << pos)){ bind(rds[i].x, rds[i].y); } } if (cnt) nw ^= 1 << pos; } cout << nw << endl; } int main(){ //freopen("abc.txt", "r", stdin); int T; cin >> T; while (T--){ solve(); } return 0; }