program events;
Uses Math;
const MAXN =100000;
type elenco= array[1..MAXN] of Int64;
var N, i:Longint;
X, Y : 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;
i:=1;
while i<= N do
begin
if Y[i]=Y[i+1] then
begin
if ((X[i]=1) and (X[i+1]=-1)) or ((X[i]=-1) and (X[i+1]=1)) then begin numeropresenti:=numeropresenti; i:=i+2; end
end
else
begin
if X[i]=1 then numeropresenti:=numeropresenti +1
else numeropresenti:=numeropresenti -1;
i:=i+1;
end;
risposta:=max(risposta, numeropresenti) ;
end;
writeln (risposta);
end.
cHJvZ3JhbSBldmVudHM7ClVzZXMgTWF0aDsKY29uc3QgTUFYTiA9MTAwMDAwOwp0eXBlIGVsZW5jbz0gYXJyYXlbMS4uTUFYTl0gb2YgSW50NjQ7CnZhciBOLCBpOkxvbmdpbnQ7CiAgICBYLCBZIDogZWxlbmNvOwogICAgbnVtZXJvcHJlc2VudGksIHJpc3Bvc3RhIDogaW50NjQ7CiAgICAKUHJvY2VkdXJlIHNjYW1iaWEgKHZhciBhLGI6IEludDY0KTsKdmFyIHg6SW50NjQ7CmJlZ2luCiAgIHg6PWE7CiAgIGE6PWI7CiAgIGI6PXg7CmVuZDsgIApQcm9jZWR1cmUgb3JkaW5hbWVudG8gKGVzdHJlbW9pLGVzdHJlbW9zOiBJbnQ2NDsgdmFyIHYgOiBlbGVuY287IHZhciB1IDogZWxlbmNvOyBvcmRpbmF0bzpib29sZWFuKTsKdmFyIGluZiwgc3VwLCBtZWRpbzpJbnQ2NDsKICAgIHBpdm90IDpJbnQ2NDsKYmVnaW4KICAgIGluZjo9ZXN0cmVtb2k7CiAgICBzdXA6PWVzdHJlbW9zOwogICAgbWVkaW86PSAoZXN0cmVtb2krZXN0cmVtb3MpIGRpdiAyOwogICAgcGl2b3Q6PXZbbWVkaW9dOwogICAgcmVwZWF0CiAgICAgIGlmIChvcmRpbmF0bykgdGhlbgogICAgICAgICBiZWdpbgogICAgICAgICAgICB3aGlsZSAodltpbmZdPHBpdm90KSBkbyAgaW5mOj1pbmYrMTsKICAgICAgICAgICAgd2hpbGUgKHZbc3VwXT5waXZvdCkgZG8gIHN1cDo9c3VwLTE7CiAgICAgICAgIGVuZDsKICAgICAgaWYgaW5mPD1zdXAgdGhlbgogICAgICAgYmVnaW4KICAgICAgICAgc2NhbWJpYSh2W2luZl0sdltzdXBdKTsKICAgICAgICAgc2NhbWJpYSh1W2luZl0sdVtzdXBdKTsKICAgICAgICAgaW5mOj1pbmYrMTsKICAgICAgICAgc3VwOj1zdXAtMTsKICAgICAgIGVuZDsKICAgIHVudGlsIGluZj5zdXA7CiAgICBpZiAoZXN0cmVtb2k8c3VwKSB0aGVuIG9yZGluYW1lbnRvKGVzdHJlbW9pLHN1cCx2LHUsIG9yZGluYXRvKTsKICAgIGlmIChpbmY8ZXN0cmVtb3MpIHRoZW4gb3JkaW5hbWVudG8oaW5mLGVzdHJlbW9zLHYsIHUsIG9yZGluYXRvKTsKZW5kOwoKYmVnaW4KICAgIHJlYWRsbihOKTsKICAgIGZvciBpOj0xIHRvIE4gZG8gcmVhZGxuKFhbaV0sWVtpXSk7CglvcmRpbmFtZW50byAoMSxOLFksWCwgdHJ1ZSk7CgludW1lcm9wcmVzZW50aTo9MDsgcmlzcG9zdGE6PTA7CglpOj0xOwoJd2hpbGUgaTw9IE4gZG8gCgkgICAgICAgIGJlZ2luCgkgICAgICAgICAgICBpZiBZW2ldPVlbaSsxXSB0aGVuCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKFhbaV09MSkgYW5kIChYW2krMV09LTEpKSBvciAoKFhbaV09LTEpIGFuZCAoWFtpKzFdPTEpKSB0aGVuIGJlZ2luIG51bWVyb3ByZXNlbnRpOj1udW1lcm9wcmVzZW50aTsgaTo9aSsyOyBlbmQKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luIAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgWFtpXT0xIHRoZW4gbnVtZXJvcHJlc2VudGk6PW51bWVyb3ByZXNlbnRpICsxCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgbnVtZXJvcHJlc2VudGk6PW51bWVyb3ByZXNlbnRpIC0xOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTo9aSsxOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOwoJICAgICAgICAgICByaXNwb3N0YTo9bWF4KHJpc3Bvc3RhLCBudW1lcm9wcmVzZW50aSkgOwoJICAgICAgICAgCgkgICAgICAgZW5kOwoJd3JpdGVsbiAocmlzcG9zdGEpOyAgIAplbmQu