program task_c; {$APPTYPE CONSOLE} uses SysUtils; var n,i,k1,k2,x1,y1,l1,r1,d,min,j,ind:longint; ans:int64; stack,new_stack,x,y:array[0..500000] of longint; f:text; procedure QSort1(l,r:longint); var buf:int64; key,i,j:longint; begin if (lkey) do dec(j); if (i<=j) then begin buf:=x[i]; x[i]:=x[j]; x[j]:=buf; buf:=y[i]; y[i]:=y[j]; y[j]:=buf; inc(i); dec(j); end; end; QSort1(l,j); QSort1(i,r); end; end; procedure QSort2(l,r:longint); var buf:int64; key,i,j:longint; begin if (lkey) do dec(j); if (i<=j) then begin buf:=x[i]; x[i]:=x[j]; x[j]:=buf; buf:=y[i]; y[i]:=y[j]; y[j]:=buf; inc(i); dec(j); end; end; QSort2(l,j); QSort2(i,r); end; end; procedure bin_search(rgh,h:longint); var l,r,mid:longint; b:boolean; begin l:=1; r:=rgh; b:=true; if (y[stack[l]]<=h) then begin ind:=1; b:=false; end; if (y[stack[r]]>h)and(b) then begin ind:=r+1; b:=false; end; if (b) then begin while (l+1h) then l:=mid else r:=mid; end; ind:=l; if (y[stack[r]]<=h) then ind:=r; end; end; begin assign(f,'task.in'); reset(f); readln(f,n); for i:=1 to n do begin readln(f,x1,y1); if (x1>y1) then begin x[i]:=y1; y[i]:=x1; end else begin x[i]:=x1; y[i]:=y1; end; end; close(f); QSort1(1,n); d:=x[1]; l1:=1; r1:=1; for i:=2 to n do begin if (d=x[i]) then begin r1:=r1+1; end else begin QSort2(l1,r1); d:=x[i]; l1:=i; r1:=i; end; end; QSort2(l1,r1); //for i:=1 to n do writeln(x[i],' ',y[i]); //readln; ans:=0; k1:=1; stack[1]:=1; stack[0]:=10000000; min:=y[1]; for i:=2 to n do begin if (y[i]