#include<bits/stdc++.h>
#define int long long
#pragma GCC optimize(2)
#define maxlen (4000+5)
using namespace std;
class BigInt{
private:
int len;
int num[maxlen];
public:
BigInt(){
len=0;
memset(num,0,sizeof(num));
return;
}
inline int INT(){
int res=0;
for(register int i=0;i<len;i++)res=(res<<3)+(res<<1)+num[i];
return res;
}
void read(){
string s;cin>>s;
len=s.size();
for(register int i=0;i<len;i++)num[i]=s[len-i-1]-'0';
return;
}
void write(char c='\n'){
for(register int i=len-1;i>=0;i--)putchar(num[i]+'0');
putchar(c);
return;
}
void down(int x){
BigInt res;res.len=0;
while(x){
res.num[res.len++]=x%10;
x/=10;
}
*this=res;
return;
}
bool operator<(BigInt y){
BigInt x=*this;
if(x.len>y.len)return 0;
if(x.len<y.len)return 1;
for(int i=x.len-1;i>=0;i--)
if(x.num[i]!=y.num[i])return x.num[i]<y.num[i];
return 0;
}
BigInt operator+(BigInt y){
BigInt x=*this;
if(x.len<y.len)swap(x,y);
BigInt res;res.len=x.len;
for(register int i=0;i<x.len;i++)res.num[i]=x.num[i]+y.num[i];
for(register int i=0;i<res.len;i++)res.num[i+1]+=res.num[i]/10,res.num[i]%=10;
while(res.num[res.len])res.num[res.len]+=res.num[res.len-1]/10,res.num[res.len-1]%=10,res.len++;
res.len++;
while(!res.num[res.len-1])res.len--;
return res;
}
BigInt operator-(BigInt y){
BigInt x=*this;
BigInt res;res.len=x.len;
for(register int i=0;i<x.len;i++)res.num[i]=x.num[i]-y.num[i];
for(register int i=0;i<res.len;i++)
if(res.num[i]<0)res.num[i+1]--,res.num[i]+=10;
while(!res.num[res.len-1])res.len--;
return res;
}
BigInt operator*(BigInt y){
BigInt x=*this;
BigInt res;res.len=x.len+y.len;
for(register int i=0;i<x.len;i++)
for(register int j=0;j<y.len;j++)res.num[i+j]+=x.num[i]*y.num[j];
for(register int i=0;i<res.len;i++)res.num[i+1]+=res.num[i]/10,res.num[i]%=10;
while(res.num[res.len])res.num[res.len]+=res.num[res.len-1]/10,res.num[res.len-1]%=10,res.len++;
res.len++;
while(!res.num[res.len-1])res.len--;
return res;
}
BigInt operator/(int y){
BigInt x=*this;
BigInt res;res.len=x.len;
int now=0;
for(register int i=x.len-1;i>=0;i--){
now+=x.num[i];
res.num[i]=now/y;
now%=y;
now*=10;
}
while(!res.num[res.len-1])res.len--;
return res;
}
BigInt operator/(BigInt y){
BigInt x=*this;
if(x<y){
BigInt t;return t;
}
BigInt t;t.num[0]=1;
BigInt l,r=x;l.num[0]=1;
BigInt mid;
while(l<r-t){
mid=(l+r)/2;
if(mid*y<x)l=mid+t;
else r=mid;
}
if(x<r*y)return l;
return r;
}
void setlen(int x){
len=x;
return;
}
};
BigInt max(BigInt x,BigInt y){
if(x<y)return y;
return x;
}
struct op{
BigInt l,r,lr;
int rr;
}num[1005];
inline bool cmp(op x,op y){
return x.lr<y.lr;
}
signed main(){
int n;cin>>n;
BigInt now;now.read();
BigInt t;t.read();
BigInt ans;
for(int i=1;i<=n;i++)num[i].l.read(),num[i].r.read(),num[i].lr=num[i].l*num[i].r,num[i].rr=num[i].r.INT();
sort(num+1,num+n+1,cmp);
for(int i=1;i<=n;i++){
//now.write('/');cout<<num[i].rr;putchar('=');(now/num[i].rr).write();
ans=max(ans,now/num[i].rr);
now=now*num[i].l;
}
ans.write();
return 0;
}