#include #include using namespace atcoder; using mint = modint1000000007; using namespace std; #define rep1(a) for(int64_t i = 0; i < a; i++) #define rep2(i, a) for(int64_t i = 0; i < a; i++) #define rep3(i, a, b) for(int64_t i = a; i < b; i++) #define rep4(i, a, b, c) for(int i = a; i < b; i += c) #define overload4(a, b, c, d, e, ...) e #define rep(...) overload4(__VA_ARGS__, rep4, rep3, rep2, rep1)(__VA_ARGS__) const int64_t MOD=998244353; const long long INF = 1LL<<60; struct UnionFind { vector par,siz; UnionFind(int N):par(N),siz(N,1){ for(int i=0;i>N; vector A(N),B(N),C(N); rep(i,N){ cin>>A[i]>>B[i]>>C[i]; A[i]--,B[i]--; } UnionFind T(N); mint ans=0,d=1; int64_t D=1; rep(i,31){ //T.init(N); UnionFind T(N); rep(j,N){ if(C[j]&D){ T.unite(A[j],B[j]); //cout<<(1<