#include<bits/stdc++.h>
using namespace std;
int n;
int ans[100005],la=0,res[100005];
struct minister
{
int a,b;
}p[1005];
bool cmp(minister x,minister y)
{
return (x.a*x.b)<(y.a*y.b);
}
int m[100005],l=1;
void mutiply(int x)
{
int add=0;
for(int i=1;i<=l+10;i++)
{
int tmp=m[i]*x+add;
m[i]=tmp%10;
add=tmp/10;
}
l+=10;
while(m[l]==0) l--;
}
void get(int x)
{
memset(res,0,sizeof(res));
int tmp,l1=0;
for(int i=l;i>=1;i--){
tmp=tmp*10+m[i],l1++;
if(tmp<x) continue;
res[l1]=tmp/x;
tmp%=x;
}
for(int i=1;i<=(l1+1)/2;i++)
swap(res[i],res[l1-i+1]);
while(res[l1]==0&&l1>1) l1--;
if(l1>la){
la=l1;
for(int i=la;i>=1;i--) ans[i]=res[i];
}
else if(l1==la){
int f=0;
for(int i=la;i>=1;i--){
if(ans[i]<res[i]){
f=1;
break;
}
if(ans[i]>res[i]) break;
}
if(f){
for(int i=la;i>=1;i--) ans[i]=res[i];
}
}
}
int main()
{
scanf("%d",&n);
for(int i=0;i<=n;i++)
scanf("%d%d",&p[i].a,&p[i].b);
sort(p+1,p+n+1,cmp);
m[l]=1;
for(int i=1;i<=n;i++){
mutiply(p[i-1].a);
get(p[i].b);
}
if(ans[la]==0) la--;
for(int i=la;i>=1;i--)
printf("%d",ans[i]);
return 0;
}