#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
int n,l,w,ans,qa,qi,o,p,nu=0;
inline int read(){
p=0;o=getchar();
while(o<‘0‘||o>‘9‘) o=getchar();
while(o>=‘0‘&&o<=‘9‘) p=p*10+o-48,o=getchar();
return p;
}
struct tree{
int l,r,k,ra,w,f;
tree(){
f=l=r=-1;
}
};
struct treap{
int size,root;
tree t[80001];
treap(){
size=0;root=-1;
}
inline void ler(int &p){
int k=t[p].r;
t[k].f=t[p].f;
t[p].f=k;
if (t[k].l!=-1) t[t[k].l].f=p;
t[p].r=t[k].l;
t[k].l=p;
p=k;
}
inline void rir(int &p){
int k=t[p].l;
t[k].f=t[p].f;
t[p].f=k;
if (t[k].r!=-1) t[t[k].r].f=p;
t[p].l=t[k].r;
t[k].r=p;
p=k;
}
inline void insert(int &p,int k,int f){
if (p==-1){
p=++size;
t[p].k=k;
t[p].w=1;
t[p].f=f;
t[p].ra=rand();
return;
}
if (t[p].k==k) t[p].w++;else
if (t[p].k>k){
insert(t[p].l,k,p);
if (t[t[p].l].ra<t[p].ra) rir(p);
}else{
insert(t[p].r,k,p);
if (t[t[p].r].ra<t[p].ra) ler(p);
}
}
inline void dell(int &p){
if (t[p].l==-1&&t[p].r==-1) p=-1;else
if (t[p].l==-1) ler(p),dell(t[p].l);else
if (t[p].r==-1) rir(p),dell(t[p].r);else
if (t[t[p].l].ra<t[t[p].r].ra) rir(p),dell(t[p].r);else ler(p),dell(t[p].l);
}
inline void del(int p){
t[p].w--;
if (t[p].w) return;
if (root==p) dell(root);else
if (t[t[p].f].l==p) dell(t[t[p].f].l);else dell(t[t[p].f].r);
}
inline int qua(int p,int k){
if (p==-1) return p=-1;
if (t[p].k==k) return p;else
if (t[p].k<k) return qua(t[p].r,k);else{
int u=qua(t[p].l,k);
if (u==-1) return p;else return u;
}
}
inline int qui(int p,int k){
if (p==-1) return -1;
if (t[p].k==k) return p;else
if (t[p].k>k) return qui(t[p].l,k);else{
int u=qui(t[p].r,k);
if (u==-1) return p;else return u;
}
}
};
treap an,pe;
int main(){
n=read();
while(n--){
l=read();w=read();
if (l){
if (nu>=0) pe.insert(pe.root,w,-1);else{
qa=an.qua(an.root,w);qi=an.qui(an.root,w);
if (qi==-1) ans+=an.t[qa].k-w,an.del(qa);else
if (qa==-1) ans+=w-an.t[qi].k,an.del(qi);else
if (w-an.t[qi].k<=an.t[qa].k-w) ans+=w-an.t[qi].k,an.del(qi);else ans+=an.t[qa].k-w,an.del(qa);
}
nu++;
}else{
if (nu<=0) an.insert(an.root,w,-1);else{
qa=pe.qua(pe.root,w);qi=pe.qui(pe.root,w);
if (qi==-1) ans+=pe.t[qa].k-w,pe.del(qa);else
if (qa==-1) ans+=w-pe.t[qi].k,pe.del(qi);else
if (w-pe.t[qi].k<=pe.t[qa].k-w) ans+=w-pe.t[qi].k,pe.del(qi);else ans+=pe.t[qa].k-w,pe.del(qa);
}
nu--;
}
if (ans>=1000000) ans%=1000000;
}
printf("%d\n",ans);
}