#include<bits/stdc++.h>
#define ll long long
#define ls(u) tr[u].s[0]
#define rs(u) tr[u].s[1]
using namespace std;
const int N=1e5+10,INF=1e8;
ll n,rt,cnt,op=-1,num,ans;
struct tree
{
ll s[2],val,pri;
}tr[N];
void rote(ll &u,ll op)
{
ll t=tr[u].s[!op];
tr[u].s[!op]=tr[t].s[op];
tr[t].s[op]=u;
u=t;
return;
}
void ins(ll &u,ll x)
{
if(!u)
{
u=++cnt;
tr[u].val=x;
tr[u].pri=rand();
return;
}
if(x<tr[u].val)
{
ins(ls(u),x);
if(tr[ls(u)].pri<tr[u].pri)rote(u,1);
}
else
{
ins(rs(u),x);
if(tr[rs(u)].pri<tr[u].pri)rote(u,0);
}
}
ll del(ll &u,ll x)
{
ll v=0;
if(x==tr[u].val||x<tr[u].val&&!ls(u)||x>tr[u].val&&!rs(u))
{
v=tr[u].val;
if(!ls(u)||!rs(u))
{
u=ls(u)+rs(u);
return v;
}
}
if(x<tr[u].val)v=del(ls(u),x);
else v=del(rs(u),x);
return v;
}
ll pre(ll u,ll x)
{
if(!u)return -INF;
if(x<=tr[u].val)return pre(ls(u),x);
return max(pre(rs(u),x),tr[u].val);
}
ll nxt(ll u,ll x)
{
if(!u)return INF;
if(x>=tr[u].val)return nxt(ls(u),x);
return min(nxt(rs(u),x),tr[u].val);
}
int main()
{
ios::sync_with_stdio(0);
srand(time(0));
cin>>n;
for(int i=1;i<=n;i++)
{
ll k,x;
cin>>k>>x;
if(op!=!k)op=k,ins(rt,x),num++;
else
{
int l=pre(rt,x+1),r=nxt(rt,x-1);
int L=abs(l-x),R=abs(r-x);
if(L==R)ans+=L,del(rt,l);
if(L<R)ans+=L,del(rt,l);
if(L>R)ans+=R,del(rt,r);
num--;
if(num==0)op=-1;
}
ans%=1000000;
}
cout<<ans;
return 0;
}