rt,#2#8 WA
#include <bits/stdc++.h>
using namespace std;
struct node
{
int a, b;
}c[1005];
int s[1000005] = {1}, len = 1;
int s1[1000005];
int ans[1000005], len2 = 0;
bool cmp(node a, node b)
{
return a.a * a.b < b.a * b.b;
}
void mul(int x)
{
int res = 0;
for (int i = 0; i < len; i++)
s[i] *= x;
for (int i = 0; i < len; i++)
{
res += s[i];
s[i] = res % 10;
res /= 10;
}
while (res)
s[len++] = res % 10, res /= 10;
// for (int i = len - 1; i >= 0; i--)
// cout << s[i];
// cout << "\n";
}
void div(int x)
{
int res = 0;
for (int i = len - 1; i >= 0; i--)
res = res * 10 + s[i], s1[i] = res / x, res = res % x;
}
void check()
{
vector<int> tmp1, tmp2;
bool flag = 0;
for (int i = 0; i < len; i++)
{
if (s1[i])
flag = 1;
if (flag)
tmp1.push_back(s1[i]);
}
flag = 0;
for (int i = 0; i < len2; i++)
{
if (ans[i])
flag = 1;
if (flag)
tmp2.push_back(ans[i]);
}
int l1 = tmp1.size(), l2 = tmp2.size();
if (l1 < l2)
return ;
if (l1 > l2)
{
for (int i = len - 1; i >= 0; i--)
ans[i] = s1[i];
len2 = len;
return ;
}
for (int i = l1 - 1; i >= 0; i--)
if (tmp1[i] < tmp2[i])
return ;
for (int i = len - 1; i >= 0; i--)
ans[i] = s1[i];
len2 = len;
}
int main()
{
// freopen("P1080_2.in", "r", stdin);
int n;
cin >> n;
for (int i = 0; i <= n; i++)
cin >> c[i].a >> c[i].b;
sort(c + 1, c + 1 + n, cmp);
for (int i = 0; i < n; i++)
{
mul(c[i].a);
div(c[i + 1].b);
check();
}
bool flag = 0, flag2 = 0;
for (int i = len2 - 1; i >= 0; i--)
{
if (ans[i])
flag = 1;
if (flag)
{
cout << ans[i];
flag2 = 1;
}
}
if (!flag2)
cout << 0;
return 0;
}