var i,n,l:longint; a,b,c:array[0..10000] of longint; g,g2:array[0..100000] of longint; procedure gj1; var j:longint; begin for j:=1 to l do g[j]:=g[j]*b[i]; for j:=1 to l do begin g[j+1]:=g[j+1]+g[j] div 10; g[j]:=g[j] mod 10; end; inc(l); while g[l]>9 do begin g[l+1]:=g[l+1]+g[l] div 10; g[l]:=g[l] mod 10; inc(l); end; if g[l]=0 then dec(l); end; procedure gj2; var j:longint; begin for j:=l downto 1 do begin g[j-1]:=g[j-1]+(g[j] mod c[n])*10; g[j]:=g[j] div c[n]; end; while (g[l]=0)and(l<>1) do dec(l); if (g[l]=0)and(l=1) then g[l]:=1; end; procedure sort(l,r:longint); var i,j,x,y:longint; begin i:=l; j:=r; x:=a[(l+r) div 2]; repeat while a[i]<x do inc(i); while x<a[j] do dec(j); if not (i>j) then begin y:=a[i]; a[i]:=a[j]; a[j]:=y; y:=b[i]; b[i]:=b[j]; b[j]:=y; y:=c[i]; c[i]:=c[j]; c[j]:=y; inc(i); dec(j); end; until (i>j); if l<j then sort(l,j); if i<r then sort(i,r); end; begin readln(n); readln(b[0],c[0]); for i:=1 to n do begin read(b[i],c[i]); a[i]:=b[i]*c[i]; end; sort(1,n); l:=1; g[1]:=b[0]; for i:=1 to n-1 do gj1; gj2; for i:=l downto 1 do write(g[i]); writeln; end. /************************************************************** Problem: 2315 User: admin Language: Pascal Result: Wrong Answer ****************************************************************/