#include <bits/stdc++.h>
using namespace std;
#define maxn 100010
#define ll long long
struct node {
int a, b;
}s[1009];
int n;
bool cmp(node s1, node s2) {
return s1.a * s1.b < s2.a * s2.b;
}
ll ans[maxn], mixn[maxn], chen[maxn] = {1, 1};
int cheng(int x) {
int t = 0;
for (int i = 1; i <= chen[0]; i++) {
chen[i] = chen[i] * x + t;
t = chen[i] / 10;
chen[i] %= 10;
if (t > 0 && i >= chen[0])
chen[0]++;
}
}
int chu(int y) {
int t = 0, flag = 1;
memset(ans, 0, sizeof(ans));
for (int i = chen[0]; i > 0; i--) {
ans[i] = (chen[i] + t * 10) / y;
t = (chen[i] + t * 10) % y;
if (ans[i] && flag) {
ans[0] = i;
flag = 0;
}
}
}
bool bijiao(ll a[], ll b[]) {
if (a[0] < b[0])
return true;
if (a[0] > b[0])
return false;
for (int i = b[0]; i > 0; i--) {
if (a[i] < b[i])
return true;
if (a[i] > b[i])
return false;
}
return false;
}
void print(ll m[]) {
int i = m[0];
while (m[i] == 0 && i > 0)
i--;
for (; i > 0; i--)
cout << m[i];
cout << "\n";
}
int main() {
cin >> n;
for (int i = 0; i <= n; i++)
cin >> s[i].a >> s[i].b;
sort(s + 1, s + 1 + n, cmp);
for (int i = 0; i < n; i++) {
cheng(s[i].a);
chu(s[i + 1].b);
if (bijiao(mixn, ans))
memcpy(mixn, ans, sizeof(ans));
}
print(mixn);
}