为什么样例最后一个输出658896227
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<cstdlib>
#include<map>
#include<cstring>
#include<sstream>
#include<set>
#include<vector>
#include<queue>
#include<bitset>
#include<stack>
#define ll long long
//#include<bits/stdc++.h>
using namespace std;
ll mod=1000000007;
ll n,ans;
struct A{
ll v,w;
}a[300000];
vector<A> v[300000];
ll d[300000];
ll num1=0,num2=0;
void dfs(ll x,ll y){
for(auto i:v[x]){
if(i.v!=y){
d[i.v]=d[x]^i.w;
dfs(i.v,x);
}
}
}
int main(){
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
std::ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n;
for(ll i=1;i<n;i++){
ll x,y,z;
cin>>x>>y>>z;
v[x].push_back(A{y,z});
v[y].push_back(A{x,z});
}
dfs(1,0);
for(ll i=0;i<=61;i++){
num1=0;
for(ll j=1;j<=n;j++){
if(d[j]&(1ll<<i)){
num1++;
}
}
num2=n-num1;
ans=(ans%mod+num1%mod*num2%mod*(1ll<<i)%mod)%mod;
cout<<num1<<endl;
// cout<<ans<<endl;
}
ans%=mod;
cout<<ans;
return 0;
}