#include<bits/stdc++.h>
#include"happy.h"
using namespace std;
vector<pair<int,int>> adj[100];
bool active[100];
long long ans;
void dfs(int u,int p,int sxor){
    if(active[u]) ans+=sxor;
    for(auto [v,c]:adj[u]){
        if(v!=p){
            dfs(v,u,sxor^c);
        }
    }
}
vector<long long> happy(int N,int Q,vector<int> u,vector<int> v,vector<int> h,vector<int> t,vector<int> l,vector<int> r){
    vector<long long> res;
    for(int i=0;i<N;i++){
        active[i]=0;
        adj[i].clear();
    }
    for(int i=0;i<N-1;i++){
        assert(i<u.size()&&i<v.size()&&i<h.size());
        adj[u[i]].emplace_back(v[i],h[i]);
        adj[v[i]].emplace_back(u[i],h[i]);
    }
    for(int qq=0;qq<Q;qq++){
        assert(qq<t.size()&&qq<l.size()&&qq<r.size());
        if(t[qq]==1){
            for(int i=l[qq];i<=r[qq];i++) active[i]=1;
        }
        else{
            for(int i=l[qq];i<=r[qq];i++) active[i]=0;
        }
        ans=0;
        for(int i=0;i<N;i++){
            if(active[i]) dfs(i,-1,0);
        }
        res.push_back(ans);
    }
    return res;
}
/*
6 5
0 1 2 2 4
1 2 3 4 5
1 2 3 4 2
1 1 2 2 1
1 2 2 4 0
2 3 2 5 5
*/
