#include <bits/stdc++.h>
using namespace std;
struct Per{
int a,b;
}d[1003];
struct Node{
int pro[10004],ans[10004],lenp,lena;
}num[1003];
bool cmp(Per x,Per y){
return x.a*x.b<y.a*y.b;
}
bool cmp2(Node x,Node y){
if(x.lena>y.lena)
return 1;
if(y.lena<x.lena)
return 0;
for(int i=x.lena;i;i--){
if(x.ans[i]>y.ans[i])
return 1;
else if(x.ans[i]<y.ans[i])
return 0;
}
return 1;
}
int n;
int main(){
scanf("%d",&n);
for(int i=0;i<=n;i++)
scanf("%d%d",&d[i].a,&d[i].b);
sort(d+1,d+n+1,cmp);
num[0].lenp=1,num[0].pro[1]=1;
/*for(int i=0;i<=n;i++)
printf("%d %d\n",d[i].a,d[i].b);*/
for(int i=1;i<=n;i++){
int l=num[i-1].lenp;
num[i].lenp=l;
for(int j=1;j<=l;j++)
num[i].pro[j]=num[i-1].pro[j]*d[i-1].a;
for(int j=1;j<=l;j++)
num[i].pro[j+1]+=num[i].pro[j]/10,num[i].pro[j]%=10;
while(num[i].pro[num[i].lenp+1])
num[i].lenp++,num[i].pro[num[i].lenp+1]=num[i].pro[num[i].lenp]/10,num[i].pro[num[i].lenp]%=10;
for(int j=num[i].lenp;j;j--)
num[i].ans[j]=num[i].pro[j];
num[i].lena=num[i].lenp;
/*for(int j=num[i].lenp;j;j--)
printf("%d",num[i].pro[j]);
printf("\n");*/
int r=0;
for(int j=num[i].lena;j;j--){
r=r*10+num[i].ans[j];
num[i].ans[j]=r/d[i].b,r%=d[i].b;
}
while(!num[i].ans[num[i].lena] && num[i].lena>1)
num[i].lena--;
/*for(int j=num[i].lena;j;j--)
printf("%d",num[i].ans[j]);
printf("\n");*/
}
sort(num+1,num+n+1,cmp2);
for(int i=num[1].lena;i;i--)
printf("%d",num[1].ans[i]);
return 0;
}
RE on 4~10