#include <bits/stdc++.h>
using namespace std;
#define int long long
int n;
int cnt[5005];
int j[5005];
int tcnt[5005];
struct m{
int a,b;
}t[1005];
int cmp(m x,m y){
return x.a*x.b<y.a*y.b||(x.a*x.b==y.a*y.b&&x.a>y.a);
}
signed main(){
cin>>n;
int l,r;
cin>>l>>r;
for(int i=1;i<=n;i++){
scanf("%lld%lld",&t[i].a,&t[i].b);
}
sort(t+1,t+1+n,cmp);
for(int i=1;l;i++){
j[i]=l%10;
l/=10;
j[0]=i;
}
for(int i=1;i<=n;i++){
memset(tcnt,0,sizeof tcnt);
int x=0;
for(int k=j[0];k>=1;k--){
tcnt[k]=(j[k]+x*10)/t[i].b;
x=(j[k]+x*10)%t[i].b;
if(tcnt[k])tcnt[0]=max(tcnt[0],k);
}
if(tcnt[0]>cnt[0]){
for(int k=0;k<=tcnt[0];k++)cnt[k]=tcnt[k];
}
if(tcnt[0]==cnt[0]){
bool f=0;
for(int k=cnt[0];k>=1;k--){
if(cnt[k]<tcnt[k]){
f=1;
break;
}
}
if(f)
for(int k=0;k<=tcnt[0];k++)cnt[k]=tcnt[k];
}
for(int i=1;i<=j[0];i++){
j[i]*=t[i].a;
}
int ta=t[i].a,l=1;
while(ta/10)
{
l++;
ta/=10;
}
j[0]+=l;
for(int i=1;i<=j[0];i++){
j[i+1]+=(j[i]/10);
j[i]%=10;
}
if(j[j[0]+1])j[0]++;
}
if(cnt[0]==0)printf("0");
for(int i=cnt[0];i>=1;i--){
printf("%lld",cnt[i]);
}
return 0;
}