program events;
Uses Math;
const MAXN =100000;
type elenco= array[1..MAXN] of Int64;
var N, i :Longint;
X, Y, Entrate, Uscite : elenco;
numeropresenti, risposta : int64;
Procedure scambia (var a,b: Int64);
var x:Int64;
begin
x:=a;
a:=b;
b:=x;
end;
Procedure ordinamento (estremoi,estremos: Int64; var v : elenco; var u : elenco; ordinato:boolean);
var inf, sup, medio:Int64;
pivot :Int64;
begin
inf:=estremoi;
sup:=estremos;
medio:= (estremoi+estremos) div 2;
pivot:=v[medio];
repeat
if (ordinato) then
begin
while (v[inf]<pivot) do inf:=inf+1;
while (v[sup]>pivot) do sup:=sup-1;
end;
if inf<=sup then
begin
scambia(v[inf],v[sup]);
scambia(u[inf],u[sup]);
inf:=inf+1;
sup:=sup-1;
end;
until inf>sup;
if (estremoi<sup) then ordinamento(estremoi,sup,v,u, ordinato);
if (inf<estremos) then ordinamento(inf,estremos,v, u, ordinato);
end;
begin
readln(N);
for i:=1 to N do readln(X[i],Y[i]);
ordinamento (1,N,Y,X, true);
numeropresenti:=0; risposta:=0;
for i:=1 to N do begin Entrate[i]:=0; Uscite[i]:=0; end;
Entrate[1]:=1;
for i:=2 to N do
begin
if Y[i]=Y[i-1] then
begin
if X[i]=1 then Entrate[i-1] :=Entrate[i-1]+1
else Uscite[i-1] :=Uscite[i-1]-1;
end
else
begin
if X[i]=1 then Entrate[i] :=Entrate[i]+1
else if X[i]=-1 then Uscite[i] :=Uscite[i]-1;
end;
end;
for i:=1 to N do write (uscite[i],' '); writeln;
for i:= 1 to N do
begin
numeropresenti:=numeropresenti+Entrate[i]+Uscite[i];
risposta:=max(risposta, numeropresenti);
end;
writeln (risposta);
end.
cHJvZ3JhbSBldmVudHM7ClVzZXMgTWF0aDsKY29uc3QgTUFYTiA9MTAwMDAwOwp0eXBlIGVsZW5jbz0gYXJyYXlbMS4uTUFYTl0gb2YgSW50NjQ7CnZhciBOLCBpIDpMb25naW50OwogICAgWCwgWSwgRW50cmF0ZSwgVXNjaXRlIDogZWxlbmNvOwogICAgbnVtZXJvcHJlc2VudGksIHJpc3Bvc3RhIDogaW50NjQ7CiAgICAKICAgIApQcm9jZWR1cmUgc2NhbWJpYSAodmFyIGEsYjogSW50NjQpOwp2YXIgeDpJbnQ2NDsKYmVnaW4KICAgeDo9YTsKICAgYTo9YjsKICAgYjo9eDsKZW5kOyAgClByb2NlZHVyZSBvcmRpbmFtZW50byAoZXN0cmVtb2ksZXN0cmVtb3M6IEludDY0OyB2YXIgdiA6IGVsZW5jbzsgdmFyIHUgOiBlbGVuY287IG9yZGluYXRvOmJvb2xlYW4pOwp2YXIgaW5mLCBzdXAsIG1lZGlvOkludDY0OwogICAgcGl2b3QgOkludDY0OwpiZWdpbgogICAgaW5mOj1lc3RyZW1vaTsKICAgIHN1cDo9ZXN0cmVtb3M7CiAgICBtZWRpbzo9IChlc3RyZW1vaStlc3RyZW1vcykgZGl2IDI7CiAgICBwaXZvdDo9dlttZWRpb107CiAgICByZXBlYXQKICAgICAgaWYgKG9yZGluYXRvKSB0aGVuCiAgICAgICAgIGJlZ2luCiAgICAgICAgICAgIHdoaWxlICh2W2luZl08cGl2b3QpIGRvICBpbmY6PWluZisxOwogICAgICAgICAgICB3aGlsZSAodltzdXBdPnBpdm90KSBkbyAgc3VwOj1zdXAtMTsKICAgICAgICAgZW5kOwogICAgICBpZiBpbmY8PXN1cCB0aGVuCiAgICAgICBiZWdpbgogICAgICAgICBzY2FtYmlhKHZbaW5mXSx2W3N1cF0pOwogICAgICAgICBzY2FtYmlhKHVbaW5mXSx1W3N1cF0pOwogICAgICAgICBpbmY6PWluZisxOwogICAgICAgICBzdXA6PXN1cC0xOwogICAgICAgZW5kOwogICAgdW50aWwgaW5mPnN1cDsKICAgIGlmIChlc3RyZW1vaTxzdXApIHRoZW4gb3JkaW5hbWVudG8oZXN0cmVtb2ksc3VwLHYsdSwgb3JkaW5hdG8pOwogICAgaWYgKGluZjxlc3RyZW1vcykgdGhlbiBvcmRpbmFtZW50byhpbmYsZXN0cmVtb3MsdiwgdSwgb3JkaW5hdG8pOwplbmQ7CgpiZWdpbgogICAgcmVhZGxuKE4pOwogICAgZm9yIGk6PTEgdG8gTiBkbyByZWFkbG4oWFtpXSxZW2ldKTsKCW9yZGluYW1lbnRvICgxLE4sWSxYLCB0cnVlKTsKCW51bWVyb3ByZXNlbnRpOj0wOyByaXNwb3N0YTo9MDsKCWZvciBpOj0xIHRvIE4gZG8gYmVnaW4gRW50cmF0ZVtpXTo9MDsgVXNjaXRlW2ldOj0wOyBlbmQ7CglFbnRyYXRlWzFdOj0xOwoJZm9yIGk6PTIgdG8gTiBkbyAKCSAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICAgIGlmIFlbaV09WVtpLTFdIHRoZW4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBYW2ldPTEgdGhlbiBFbnRyYXRlW2ktMV0gOj1FbnRyYXRlW2ktMV0rMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAgIFVzY2l0ZVtpLTFdIDo9VXNjaXRlW2ktMV0tMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgWFtpXT0xIHRoZW4gRW50cmF0ZVtpXSA6PUVudHJhdGVbaV0rMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlICBpZiBYW2ldPS0xIHRoZW4gVXNjaXRlW2ldIDo9VXNjaXRlW2ldLTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOwogICAgICAgICAgICAgICAgIGVuZDsKICAgICBmb3IgaTo9MSB0byBOIGRvIHdyaXRlICh1c2NpdGVbaV0sJyAnKTsgd3JpdGVsbjsKICAgICBmb3IgaTo9IDEgdG8gTiBkbyAgCiAgICAgICAgICAgICAgICAgICBiZWdpbiAKICAgICAgICAgICAgICAgICAgICAgICBudW1lcm9wcmVzZW50aTo9bnVtZXJvcHJlc2VudGkrRW50cmF0ZVtpXStVc2NpdGVbaV07CiAgICAgICAgICAgICAgICAgICAgICAgcmlzcG9zdGE6PW1heChyaXNwb3N0YSwgbnVtZXJvcHJlc2VudGkpOwogICAgICAgICAgICAgICAgICAgZW5kOyAgIAoJd3JpdGVsbiAocmlzcG9zdGEpOyAgICAgICAgICAKZW5kLg==