#include<cstring>
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int maxn[1000005],cnt[1000005];
struct node
{
int a,b;
};node no[1000005];
bool cmp(node x,node y)
{
return x.b*x.a<y.b*x.b;
}
void mulBIG(int a[],int b,int c[])
{
c[0]=a[0];
int u=0;
for(int i=1;i<=c[0];i++)
{
int t=a[i]*b+u;
c[i]=t%10;
u=t/10;
}
while(u>0)
{
c[++c[0]]=u%10;
u/=10;
}
}
void addBIG(int x[],int y[],int z[])
{
z[0]=max(x[0],y[0]);
int u=0;
for(int i=1;i<=z[0];i++)
{
int t=x[i]+y[i]+u;
z[i]=t%10;
u=t/10;
}
if(u>0)
z[++z[0]]=u;
}
void subBIG(int x[],int y[],int z[])
{
z[0]=max(x[0],y[0]);
int u=0;
for(int i=1;i<=z[0];i++)
{
x[i]-=u;
u=0;
int t=x[i]-y[i]-u;
if(t>=0)
{
z[i]=x[i]-y[i];
continue;
}
u=1;
z[i]=t+10;
}
while(z[z[0]]==0&&z[0]>1)
z[0]--;
}
void s2BIG(string s,int a[])
{
a[0]=s.size();
for(int i=a[0];i>=1;i--)
a[i]=s[a[0]-i]-'0';
}
void printBIG(int a[])
{
for(int i=a[0];i>=1;i--)
cout<<a[i];
cout<<endl;
}
bool cmpBIG(int a[], int b[])
{
if(a[0] != b[0]) return a[0] < b[0];
for(int i = a[0]; i >= 1; i--)
if(a[i] != b[i]) return a[i] < b[i];
return false;
}
void divBIG(int a[],int b,int c[])
{
c[0]=a[0];
int r=0;
for(int i=c[0];i>=1;i--)
{
int t=r*10+a[i];
c[i]=t/b;
r=t%b;
}
while(c[c[0]]==0&&c[0]>1)
c[0]--;
}
void fuzhiBIG(int a[],int b[])
{
memset(a,0,sizeof(a));
a[0]=b[0];
for(int i=1;i<=b[0];i++)
a[i]=b[i];
return;
}
int main(){
int n;
cin>>n;
cin>>no[0].a>>no[0].b;
for(int i=1;i<=n;i++) cin>>no[i].a>>no[i].b;
sort(no+1,no+n+1,cmp);
string s="1";
s2BIG(s,cnt);
for(int i=1;i<=n;i++)
{
mulBIG(cnt,no[i-1].a,cnt);
int x[1000005];
divBIG(cnt,no[i].b,x);
if(cmpBIG(x,maxn)==false)
fuzhiBIG(maxn,x);
}
printBIG(maxn);
return 0;
}