#include<bits/stdc++.h>
#include "happy.h"
using namespace std;
using ll = long long;
vector<bool> arefree;
vector<pair<ll,ll>> G[300000];
ll listi[2000][2000];
void bfs(ll start){
    priority_queue<pair<ll,ll>, vector<pair<ll,ll>>, greater<>> pr;
    pr.push({start,0});
    listi[start][start]=0;
    while(!pr.empty()){
        auto topi=pr.top();
        pr.pop();
        for(ll i=0; i<G[topi.first].size(); i++){
            if(listi[start][G[topi.first][i].first]==-1){
                if(topi.second!=0){
                    listi[start][G[topi.first][i].first]=G[topi.first][i].second^topi.second;
                }
                else{
                    listi[start][G[topi.first][i].first]=G[topi.first][i].second;
                }
                pr.push({G[topi.first][i].first,listi[start][G[topi.first][i].first]});
            }
        }
    }
}
long long int xori(ll li, ll ri){
    ll sum=0;
    for(ll i=li; i<=ri; i++){
        if(arefree[i]==true){
            for(ll j=i+1; j<=ri; j++){
                if(arefree[j]==true){
                    sum+=listi[i][j];
                }
            }
        }
    }
}
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(ll i=0; i<N; i++){
        G[u[i]].push_back({v[i],h[i]});
        G[v[i]].push_back({u[i],h[i]});
    }
    for(ll i=0; i<N; i++){
        for(ll j=0; j<N; j++){
            listi[i][j]=-1;
        }
    }
    for(ll i=0; i<N; i++){
        bfs(i);
    }
    ll ti,li,ri;
    vector<long long int> ans;
    for(ll i=0; i<Q; i++){
        if(ti==1){
            for(ll j=li; j<=ri; j++){
                arefree[j]=true;
            }
        }
        else{
            for(ll j=li; j<=ri; j++){
                arefree[j]=false;
            }
        }
        ans.push_back(xori(li,ri));
    }
}
