#include<bits/stdc++.h>
#define ll long long
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define pii pair<int,int>
#define pll pair<ll,ll>
using namespace std;
const int N=2e5+10;
ll tp[N],d[N],num[N],tot,sz[N<<2],cnt[2][N<<2],sum[N<<2];
void modify(int idx,int l,int r,int pos,int a,int b)
{
if(l==r){sz[idx]+=a,cnt[b][idx]+=a,sum[idx]+=num[l]*a;return;}
int mid=(l+r)>>1;
if(pos<=mid)modify(idx<<1,l,mid,pos,a,b);
else modify(idx<<1|1,mid+1,r,pos,a,b);
sz[idx]=sz[idx<<1]+sz[idx<<1|1];
cnt[b][idx]=cnt[b][idx<<1]+cnt[b][idx<<1|1];
sum[idx]=sum[idx<<1]+sum[idx<<1|1];
}
ll query1(int idx,int l,int r,int k)
{
if(l==r)return k*num[l];
int mid=(l+r)>>1;
if(sz[idx<<1]<k)return sum[idx<<1]+query1(idx<<1|1,mid+1,r,k-sz[idx<<1]);
else return query1(idx<<1,l,mid,k);
}
bool query2(int idx,int l,int r,int k)
{
if(l==r)return cnt[1][idx]>=k;
int mid=(l+r)>>1;
if(sz[idx<<1]<k)return (cnt[1][idx<<1]==sz[idx<<1])?query2(idx<<1|1,mid+1,r,k-sz[idx<<1]):0;
else return query2(idx<<1,l,mid,k);
}
ll query3(int idx,int l,int r,int k)
{
if(l==r)return num[l];
int mid=(l+r)>>1;
if(sz[idx<<1]<k)return query3(idx<<1|1,mid+1,r,k-sz[idx<<1]);
else return query3(idx<<1,l,mid,k);
}
ll query4(int idx,int l,int r)
{
if(l==r)return num[l];
int mid=(l+r)>>1;
if(cnt[0][idx<<1])return query4(idx<<1,l,mid);
else return query4(idx<<1|1,mid+1,r);
}
bool cmp(int x,int y){return x>y;}
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%lld%lld",&tp[i],&d[i]),num[++tot]=abs(d[i]);
sort(num+1,num+1+tot,cmp);
tot=unique(num+1,num+1+tot)-num-1;
ll tmp=0;
for(int i=1;i<=n;i++)
{
tmp+=d[i];
int t=lower_bound(num+1,num+1+tot,abs(d[i]),cmp)-num;
ll ans=tmp;
if(d[i]>0)modify(1,1,tot,t,1,tp[i]);
else modify(1,1,tot,t,-1,tp[i]);
if(cnt[1][1])
{
ans+=query1(1,1,tot,cnt[1][1]);
if(query2(1,1,tot,cnt[1][1]))
{
ans-=query3(1,1,tot,cnt[1][1]);
if(cnt[0][1])ans+=query4(1,1,tot);
}
}
printf("%lld\n",ans);
}
return 0;
}