#include <bits/stdc++.h>
using namespace std;
#define pb emplace_back
#define MP make_pair
#define pii pair<int,int>
#define pll pair<ll,ll>
#define lson rt<<1
#define rson rt<<1|1
#define CLOSE std::ios::sync_with_stdio(false)
#define sz(x) (int)(x).size()
typedef long long ll;
typedef double db;
const int INF = 0x3f3f3f3f;
const db eps = 1e-6;
ll tag[N],tree[N];
void modify(int rt,int l,int r,int L,int R,ll v) {
tree[rt] += (min(R,r) - max(L,l) + 1) * v;
if(l >= L && r <= R) {
tag[rt] += v; return ;
}
int mid = (l + r) >> 1;
if(L <= mid) modify(lson,1,mid,L,R,v);
if(R > mid) modify(rson,mid+1,r,L,R,v);
}
ll query(int rt,int l,int r,int L,int R,ll tg) {
if(l >= L && r <= R) {
return tree[rt] + (r - l + 1) * tg;
}
int mid = (l + r) >> 1;
ll ans = 0;
if(L <= mid) ans += query(lson,l,mid,L,R,tg + tag[rt]);
if(R > mid) ans += query(rson,mid+1,r,L,R,tg + tag[rt]);
return ans;
}
void modify(int rt,int l,int r,int L,int R,ll v) {
if(l >= L && r <= R) {
tag[rt] += v; return ;
}
tree[rt] += (min(R,r) - max(L,l) + 1) * v;
int mid = (l + r) >> 1;
if(L <= mid) modify(lson,l,mid,L,R,v);
if(R > mid) modify(rson,mid+1,r,L,R,V);
}
ll query(int rt,int l,int r,int L,int R) {
if(l >= L && r <= R) {
return sum[rt] + (r - l + 1) * tag[rt];
}
int mid = (l + r) >> 1;
ll ans = (min(R,r) - max(L,r) + 1) * tag[rt];
if(L <= mid) ans += query(lson,l,mid,L,R);
if(R > mid) ans += query(rson,mid+1,r,L,R);
return ans;
}
int main() {
return 0;
}