
#include<bits/stdc++.h>
using namespace std;
const long long N=1e6+17;
long long n;
long long a,b;
struct node{
long long l,r;
}a[N];
bool cmp(node q,node w){
return q.l*q.r<w.l*w.r;
}
void gc(long long a[],string bsize,long long &c[],long long la){
long long lb=bsize.size();
long long lc=la+lb-1,b[4100],p[4100];
for(long long i=0;i<lb;i++){
b[i]=bsize[lb-i-1]-'0';
}
for(long long i=0;i<lb;i++){
for(long long j=0;j<la;j++){
c[i+j]+=b[i]*a[j];
if(c[i+j]>9){
c[i+j+1]+=c[i+j]/10;
c[i+j]%=10;
}
}
}
while(c[lc]==0&&lc>=1){
lc--;
}
for(long long i=lc;i>=0;i--){
c[i]=c[lc-i];
}
}
void check(long long* a,long long* b,long long len){
if(a[len]>0) return 1;
for(long long i=len-1;i>=0;i--){
if(a[i]>b[i]) return 1;
else if(a[i]<b[i]) return 0;
}
return 1;
}
void gcc(long long &a[N],string bsize,long long &c[N],long long la){
long long lb=bsize.size(),b[N],i,j;
for(long long i=0;i<lb;i++){
b[i]=bsize[lb-i-1]-'0';
}
if(bsize=="0") return ;
for(i=la-lb;i>=0;i--){
while(check(a+i,b,lb)){
c[i]++;
for(j=0;j<=ln-1;j++){
if(a[i+j]<b[j]){
a[i+j+1]--;
a[i+j]+=10;
}
a[i+j]-=b[j];
}
}
}
while(a[la]==0&&la>0) la--;
while(c[len]==0&&c>0) len--;
for(long long i=lc;i>=0;i--){
c[i]=c[lc-i];
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>a>>b;
for(long long i=1;i<=n;i++){
cin>>a[i].l>>a[i].r;
}
sort(a+1,a+1+n,cmp);
int sum=a[1].l;
for(int i=2;i<=n+1;i++){
int num=gcc();
ans=max(ans,num);
sum*=a[i].l;
}
cout<<ans<<endl;
return 0;
}