#include <bits/stdc++.h>
#define SIZE 509
#define time TIME
#define Less LESS
using namespace std;
struct person{
int l,r,times;
bool operator<(const person&p) const{
return times<p.times;
}
};
void deal(int *a){//奇怪数
for (int i=0;i<SIZE;++i){
if (a[i]>9){
a[i+1]+=a[i]/10;
a[i]%=10;
}
}
}
void mul(int *a,int b){
for (int i=0;i<SIZE;++i){
a[i]*=b;
}
deal(a);
}
void divide(int *a,int b,int *ans){
for (int i=SIZE-1;i>=0;--i){
ans[i]=0;
}
int r=0;
for (int i=SIZE-1;i>=0;--i){
r*=10;
if ((a[i]+r)<b){
r+=a[i];
}
else{
ans[i]=((a[i]+r)/b);
r+=a[i];r%=b;
}
}
}
void print(int *a){
int lena;
for (int i=SIZE-1;i>=0;--i){
if (a[i]!=0){
lena=i;break;
}
}
for (int i=lena;i>=0;--i){
cout<<a[i];
}
}
bool Less(int *A,int *B){//a<b
int lena,lenb;
for (int i=SIZE-1;i>=0;--i){
if (A[i]!=0){
lena=i;break;
}
}
for (int i=SIZE-1;i>=0;--i){
if (B[i]!=0){
lenb=i;break;
}
}
if (lena==lenb){
for (int i=lena;i>=0;--i){
if (A[i]>B[i]) return false;
else if (A[i]<B[i]) return true;
}
}
else if (lena<lenb) return true;
else return false;
}
person line[10009];
int n,a,b,x,y;
int time[SIZE],tmp[SIZE],ans[SIZE];
signed main(){
cin>>n>>a>>b;for (int i=1;i<=n;++i){
cin>>line[i].l>>line[i].r;line[i].times=line[i].l*line[i].r;
}
sort(line+1,line+n+1);
time[0]=1;//deal(time);
line[0].l=a;
for (int i=1;i<=n;++i){
mul(time,line[i-1].l);
divide(time,line[i].r,tmp);
if (Less(ans,tmp)){
for (int i=0;i<SIZE;++i) ans[i]=tmp[i];
}
}
print(ans);
return 0;
}
菜鸟求助!