#include<iostream>
#include<cstdio>
#include<algorithm>
#include<math.h>
#include<cstring>
using namespace std;
long long n,l[1005],r[10005],digit_all,digit_ans=0;
long long ad[1000005],ans[1000005],tans[1000005];
int maxx1(long long k){
double a,b;
a=1/r[k];
b=l[k]/r[k+1];
return floor(max(a,b));
}
int maxx2(long long k){
double a,b;
a=1/r[k+1];
b=l[k+1]/r[k];
return floor(max(a,b));
}
void found(){
for(int s=1;s<=digit_all;s++)
cout<<ad[s];
cout<<endl;
return;
}
void a_found(){
for(int s=1;s<=digit_all;s++)
cout<<ans[s];
cout<<endl;
return;
}
void ta_found(){
for(int s=1;s<=digit_ans;s++)
cout<<tans[s];
return;
}
void equal(long long rx){
long long digit=0,rz=rx;
while(rz>0){
digit++;
rz/=10;
}
digit_all=digit;
for(int i=1;i<=digit;i++){
ad[i]=rx%10;
rx/=10;
}
return;
}
void times(long long rx){
for(int i=1;i<=digit_all;i++){
ad[i]*=rx;
}
for(int i=1;ad[i+1]>=10;i++){
ad[i+1]+=ad[i]/10;
ad[i]%=10;
if(i>digit_all)digit_all++;
}
return;
}
void division(long long rx){
long long d_digit=0;
bool d_flag=0;
for(int i=digit_all;i>=1;i--){
//cout<<"adi:"<<ad[i]<<endl;
//cout<<"rx:"<<rx<<endl;
ans[i]=ad[i]/rx;
//cout<<"ansi:"<<ans[i]<<endl;
if(ans[i]>0||d_flag){
d_digit++;
d_flag=1;
}
ad[i]%=rx;
ad[i-1]=ad[i]*10;
}
digit_all=d_digit;
return;
}
void replace(){
digit_ans=digit_all;
memset(tans,0,sizeof(tans));
for(int i=1;i<=digit_ans;i++)
tans[i]=ans[i];
return;
}
void compare(){
if(digit_all==0||digit_ans>digit_all)
return;
if(digit_ans==0||digit_all>digit_ans){
replace();
return;
}
for(int i=digit_ans;i>=1;i--){
if(ans[i]>tans[i]){
replace();
return;
}
}
return;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n+1;i++){
scanf("%d%d",&l[i],&r[i]);
}
for(int j=2;j<n+1;j++){
for(int i=j;i<n+1;i++){
if(maxx2(i)<maxx1(i)){
swap(r[i],r[i+1]);
swap(l[i],l[i+1]);
}
}
}
/*
for(int i=1;i<=n+1;i++){
printf("The %d left is: %d\n",i,l[i]);
printf("The %d right is: %d\n",i,r[i]);
}
cout<<endl;
*/
for(int i=2;i<=n+1;i++){
memset(ad,0,sizeof(ad));
//cout<<"The man:"<<i<<endl;
equal(l[i-1]);
//cout<<"The first:";
//found();
//cout<<"The man first:"<<p<<endl;
for(int j=i-2;j>=1;j--){
/*//cout<<"The double left:"<<l[j]<<endl;
cout<<"f1:";
found();
cout<<"l[j]="<<l[j]<<endl;*/
times(l[j]);
/*cout<<"f2:";
found();
cout<<endl<<endl;
//printf("left:%d\n",p);*/
}
division(r[i]);
//a_found();
//printf("left ans:%d\n",p);
compare();
//ans=max(p,ans);!!
}
//printf("%d",ans);!!
if(digit_ans==0){
cout<<0;
return 0;
}
ta_found();
return 0;
}
交了之后和交之前没区别……还是50分……