#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define ll long long
const ll N = 10010;
struct node {
ll a;
ll b;
ll lc;
ll c[N];
}a[N];
ll n;
ll b[N];
bool cmp (node a, node b) {
return a.a*a.b<b.a*b.b;
}
bool cmp2 (node a, node b) {
if (a.lc==b.lc) {
for (ll i=a.lc; i>=1; i--)
if (a.c[i]!=b.c[i])
return a.c[i]>b.c[i];
return 1;
}
return a.lc>b.lc;
}
ll cheng (ll a[], ll l, ll x, ll *b) {
for (ll i=1; i<=l; i++) b[i] = a[i]*x;
for (ll i=1; i<=l; i++) {
b[i+1] += b[i]/10;
b[i] %= 10;
}
while (b[l+1]>9) {
l++;
b[l+1] += b[l]/10;
b[l] %= 10;
}
if (b[l+1]) l++;
return l;
}
ll chu (ll *a, ll l, ll x) {
ll t=0, p=0;
bool f = 0;
for (ll i=l; i>=1; i--) {
t = t*10+a[i];
if (t<x) {
if (f) b[++p]=0;
continue;
}
f = 1;
b[++p] = t/x;
t %= x;
}
for (ll i=1; i<=p; i++) a[i] = b[p-i+1];
return p;
}
int main()
{
scanf("%lld", &n);
scanf("%lld%lld", &a[0].a, &a[0].b);
for (ll i=1; i<=n; i++)
scanf("%lld%lld", &a[i].a, &a[i].b);
sort(a+1, a+1+n, cmp);
a[0].c[1] = 1;
a[0].lc = 1;
for (ll i=1; i<=n; i++)
a[i].lc = cheng(a[i-1].c, a[i-1].lc, a[i-1].a, a[i].c);
for (ll i=1; i<=n; i++)
a[i].lc = chu(a[i].c, a[i].lc, a[i].b);
sort(a+1, a+1+n, cmp2);
for (ll i=a[1].lc; i>=1; i--)
printf("%lld", a[1].c[i]);
return 0;
}