#include #include #include #include #include #include #include using namespace std; long long he[200001],prenum[200001],postnum[200001],sum[200001],maxh,br,h,n,par[200001],used[200001],root,k,c,a,b; vector vis[200001],res[200001],child[200001]; vector > height[200001]; void solve(long long c, long long a, long long b) { long long ans=0; //cout<maxh) {printf("0\n"); return;} else { int p1=lower_bound(vis[a+he[c]].begin(),vis[a+he[c]].end(),prenum[c])-vis[a+he[c]].begin(); int p2=upper_bound(vis[a+he[c]].begin(),vis[a+he[c]].end(),postnum[c])-vis[a+he[c]].begin(); if(p1>vis[a+he[c]].size()-1) {} else { if(p2>vis[a+he[c]].size()-1) p2=vis[a+he[c]].size()-1; //cout<0) ans=res[a+he[c]][p2]-res[a+he[c]][p1-1]; else ans=res[a+he[c]][p2]; //cout<=maxh-he[c]) { if(a<=0) printf("%lld\n",ans+sum[c]-1); else printf("%lld\n",ans); return; } else if(b<=0) {printf("%lld\n",ans); return;} int p1=lower_bound(vis[b+1+he[c]].begin(),vis[b+1+he[c]].end(),prenum[c])-vis[b+1+he[c]].begin(); int p2=upper_bound(vis[b+1+he[c]].begin(),vis[b+1+he[c]].end(),postnum[c])-vis[b+1+he[c]].begin(); //cout<vis[b+1+he[c]].size()-1) {} else { if(a<=0) ans*=-1; if(p2>vis[b+1+he[c]].size()-1) p2=vis[b+1+he[c]].size()-1; if(p1>0) ans-=res[b+1+he[c]][p2]-res[b+1+he[c]][p1-1]; else ans-=res[b+1+he[c]][p2]; if(a<=0) ans*=-1; } printf("%lld\n",ans); //cout<