#include<bits/stdc++.h>
#define ll long long
//#define LOCAL
#define REP(i,n) for(int (i)=0;(i)<(int)(n);(i)++)
#define foreach(c,itr) for(__typeof((c).begin()) itr=(c).begin();itr!=(c).end();itr++)
using namespace std;
const int INF=0x3f3f3f3f;
const int SIZE=1001;
struct INT
{
int l;
int r;
bool operator<(const INT &a)
{
return l*r<a.l*a.r;
}
}a[SIZE];
int n;
struct bigint
{
int num[5050];
int len;
bool operator>(const bigint &a)
{
if(len>a.len)return true;
if(len<a.len)return false;
for(int i=len-1;i>=0;i--)
if(num[i]>a.num[i])return true;
else if(num[i]<a.num[i])return false;
return false;
}
bigint operator=(bigint a)
{
len=a.len;
REP(i,len)num[i]=a.num[i];
}
bigint operator=(int a)
{
len=0;
while(a!=0)
{
num[len]=a%10;
a/=10;
len++;
}
}
};
bigint mult(bigint x,int a)
{
REP(i,x.len)x.num[i]*=a;
REP(i,x.len)
{
if(x.num[i]>=10)
x.num[i+1]+=x.num[i]/10;
x.num[i]%=10;
}
while(x.num[x.len-1]>=10)
{
x.num[x.len]+=x.num[x.len-1]/10;
x.num[x.len-1]%=10;
x.len++;
}
if(x.num[x.len])x.len++;
return x;
}
bigint div(bigint x,int a)
{
for(int i=x.len-1;i>=0;i--)
{
if(i>0)x.num[i-1]+=(x.num[i]%a)*10;
x.num[i]/=a;
}
while(x.num[x.len-1]==0)x.len--;
return x;
}
int main()
{
#ifdef LOCAL
//freopen("P1080_6.in","r",stdin);
//freopen(".in","w",stdout);
#endif
cin>>n;
cin>>a[0].l>>a[0].r;
REP(i,n)cin>>a[i+1].l>>a[i+1].r;
sort(a+1,a+n+1);
bigint ans;
ans=0;
bigint mu;
mu=a[0].l;
for(int i=1;i<=n;i++)
{
if(div(mu,a[i].r)>ans)
ans=div(mu,a[i].r);
mu=mult(mu,a[i].l);
}
for(int i=ans.len-1;i>=0;i--)
cout<<ans.num[i];
cout<<endl;
return 0;
}
为什么只有60分