#include<bits/stdc++.h>
#include "happy.h"
using namespace std;
const int maxn=1e5+7;
vector<pair<int,int>>g[maxn];
long long int sum=0;
bool dali[maxn];
void dfs(int u, int par, long long int xr) {
if(dali[u]) sum+=xr;
for(auto x:g[u]) {
      if(x.first==par) continue;

      dfs(x.first,u,(xr^x.second));

}
return;
}
std::vector<long long int> happy (int N, int Q,
std::vector<int> u, std::vector<int> v, std::vector<int> h,
std::vector<int> t, std::vector<int> l, std::vector<int> r) {
for(int i=0; i<N-1; i++) {
        g[u[i]].push_back({v[i],h[i]});
        g[v[i]].push_back({u[i],h[i]});
}
vector<long long int>ans;
for(int i=0; i<Q; i++) {
       if(t[i]==0) {
           for(int j=l[i]; j<=r[i]; j++) {
               dali[j]=false;
           }
       }
       else {
           for(int j=l[i]; j<=r[i]; j++) {
               dali[j]=true;
           }
       }
       sum=0;
       for(int x=0; x<=N-1; x++) {
          if(dali[x]) {
               dfs(x,-1,0);
          }
       }
       ans.push_back(sum/2);

}
return ans;
}
/*

6 5
0 1 1
1 2 2
2 4 4
2 3 3
4 5 2
1 1 2
1 2 3
2 2 2
2 4 5
1 0 5
*/
