#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
struct imp{int x,y;}a[1005];
int n,m,i,j,x,len,lena,t,t1[20005],q[20005],ans[20005],tt[20005],L,R;
bool comp(imp a,imp b)
{
return a.x*a.y<b.x*b.y;
}
void qq(int L,int R)
{
for(int i=1;i<=m;i++)t1[i]*=L;
for(int i=1;i<=m;i++)t1[i+1]+=t1[i]/10,t1[i]%=10;
m++;
while(t1[m]>=10)
{
t1[m+1]=t1[m]/10;
t1[m++]%=10;
}
while(m>1&&t1[m]==0)m--;
len=m;
for(int i=1,j=m;i<=m;i++,j--)
q[i]=t1[j];
int x=0;
for(int i=1;i<=m;i++)
{
tt[i]=(x*10+q[i])/R;
x=(x*10+q[i])%R;
}
x=1;
while(x<m&&tt[x]==0)x++;
int i,j;
for(i=1,j=x;j<=m;i++,j++)
tt[i]=tt[j];
for(j=i;j<=m;j++)tt[i]=0;
len=m-x+1;
}
bool cmp()
{
if(len>lena)return true;
if(len<lena)return false;
for(int i=1;i<=len;i++)
{
if(ans[i]<tt[i]) return true;
if(ans[i]>tt[i]) return false;
}
return false;
}
void QAQ()
{
t1[1]=1;m=1;
for(int i=1;i<=n;i++)
{
qq(a[i-1].x,a[i].y);
if(cmp())
{
memcpy(ans,tt,sizeof(tt));
lena=len;
}
}
for(int i=1;i<=lena;i++)
printf("%d",ans[i]);
}
int main()
{
cin>>n;
for(i=0;i<=n;i++)
cin>>a[i].x>>a[i].y;
sort(a+1,a+n+1,comp);
QAQ();
return 0;
}