#include<bits/stdc++.h>
using namespace std;
struct dacheng{
int z;
int y;
}a[10005];
int gw1,gw2;
int cj[40010],jb[40010],ans[40010];
bool cmp(dacheng x,dacheng q){
if(x.z*x.y<q.z*q.y) return true;
else return false;
}
void ss(int n){
if(n==1) cj[1]*=gw1;
else
for(int i=1;i<=cj[0];i++)
cj[i]*=a[n-1].z;
for(int i=1;i<=cj[0];i++){
if(cj[i]>=10&&i>=cj[0]) cj[0]++;
cj[i+1]+=cj[i]/10;
cj[i]%=10;
}
memset(jb,0,sizeof(jb));
for(int i=0;i<=cj[0];i++){
jb[i]=cj[i];
}
int r=0;
for(int i=jb[0];i>=1;i--){
if(jb[i]==a[n].y){jb[i]/=a[n].y;break;}
if(jb[i]<a[n].y) {
if(i!=1) {jb[i-1]+=10*jb[i];jb[i]=0;if(r==0) jb[0]--;continue;}
else jb[i]/=a[n].y;
}
if(jb[i]>a[n].y) {
r=1;
if(i!=1) {
jb[i-1]+=10*(jb[i]%a[n].y);
jb[i]/=a[n].y;
}
else {
jb[i]/=a[n].y;
}
}
}
}
bool bj(){
int mrg=max(ans[0],jb[0]);
for(int i=mrg;i>=1;i--){
if(jb[i]>ans[i]) return true;
if(jb[i]<ans[i]) return false;
}
return false;
}
int main(){
int n;cin>>n;
cin>>gw1>>gw2;
for(int i=1;i<=n;i++)
cin>>a[i].z>>a[i].y;
sort(a+1,a+1+n,cmp);
/*for(int i=1;i<=n;i++){
cout<<a[i].z<<" "<<a[i].y<<endl;
}*/
cj[1]=1;
cj[0]=1;
for(int i=1;i<=n;i++){
ss(i);
if(bj())
for(int j=jb[0];j>=0;j--)
ans[j]=jb[j];
}
for(int i=ans[0];i>=1;i--){
cout<<ans[i];
}
return 0;
}
求大佬看下 5和7过不了