#include <bits/stdc++.h>
using namespace std;
int n;
string x,y;
string ans;
struct node{
string a1;
int a,b;
}a[10005];
int compare(string str1,string str2)
{
if(str1.length()>str2.length()) return 1;
else if(str1.length()<str2.length()) return -1;
else return str1.compare(str2);
}
string mul(string a,string b){
int n1[10005],n2[10005],ret[10005];
memset(n1,0,sizeof(n1));
memset(n2,0,sizeof(n2));
memset(ret,0,sizeof(ret));
int len1=a.size();
int len2=b.size();
for(int i=1;i<=len1;i++) n1[i]=a[len1-i]-'0';
for(int i=1;i<=len2;i++) n2[i]=b[len2-i]-'0';
for(int i=1;i<=len2;i++)
for(int j=1;j<=len1;j++)
ret[i+j-1]+=n1[j]*n2[i];
for(int i=1;i<len1+len2;i++)
if(ret[i]>9){
ret[i+1]+=ret[i]/10;
ret[i]%=10;
}
int len=len1+len2;
while(ret[len]==0 && len>1)len--;
string rt;
for(int i=len;i>=1;i--) rt=rt+char(ret[i]+'0');
return rt;
}
string div(string a,int b){
int num[10005],ret[10005],cr=0;
memset(num,0,sizeof(num));
memset(ret,0,sizeof(ret));
int len=a.size(),len_ret;
for(int i=1;i<=len;i++) num[i]=a[i-1]-'0';
for(int i=1;i<=len;i++){
ret[i]=(cr*10+num[i])/b;
cr=(cr*10+num[i])%b;
}
len_ret=1;
while(ret[len_ret]==0 && len_ret<len) len_ret++;
string rt;
for(int i=len_ret;i<=len;i++) rt=rt+char(ret[i]+'0');
return rt;
}
bool cmp(node a,node b){
return a.a*a.b<b.a*b.b;
}
string chan(int x){
string ret;
for(int i=0;x;i++){
ret=ret+char(x%10+'0');
x/=10;
}
int len=ret.size();
for(int i=0;i<len/2;i++) swap(ret[i],ret[len-1-i]);
return ret;
}
int main(){
cin>>n;
cin>>x>>y;
for(int i=1;i<=n;i++){
cin>>a[i].a>>a[i].b;
a[i].a1=chan(a[i].a);
}
sort(a+1,a+1+n,cmp);
string s;
for(int i=1;i<=n;i++){
s=div(x,a[i].b);
if(compare(s,ans)==1) ans=s;
x=mul(x,a[i].a1);
}
cout<<ans;
return 0;
}