#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=2e5+10;
int op[maxn],d[maxn],n;
int xx[maxn],num;
int ans[maxn];
struct tree
{
	int a[maxn<<2],sumn[maxn<<2];
	void update(int x,int shu,int l,int r,int p)
	{
		if( l==r )
		{
			a[p]+=shu;//储存节点数量 
			sumn[p]+=shu*xx[l];//储存节点权值 
			return;
		}
		int mid = (l+r)/2;
		if( x<=mid )	update(x,shu,l,mid,p<<1);
		if( x>mid )	update(x,shu,mid+1,r,p<<1|1);
		a[p]=a[p<<1]+a[p<<1|1];
		sumn[p]=sumn[p<<1]+sumn[p<<1|1];
	}
	int ask(int k,int l,int r,int p)//后k大
	{
		if( k<=0 )	return 0;
		if( a[p]<=k )	return sumn[p];
		if( l==r )	return k*xx[l];
		int mid=l+r>>1;
		int ans=0;
		if( a[p<<1|1]>=k )	ans=ask(k,mid+1,r,p<<1|1);
		else
		{
			k-=a[p<<1|1];
			ans=sumn[p<<1|1]+ask(k,l,mid,p<<1);
		}
		return ans;
	}
	int askmi(int l,int r,int p)
	{
		if( l==r )	return l;
		int mid=l+r>>1;
		if( a[p<<1] )	return askmi(l,mid,p<<1);
		else	return askmi(mid+1,r,p<<1|1);
	}
}T,TT;