#include <bits/stdc++.h>
using namespace std;
ifstream fin("aliens.in");
ofstream fout("aliens.out");
const short nmax = 50, l3 = 18 * 50, l5 = 12 * 50, inf = 30000, offset1 = 18 * 50, offset2 = 12 * 50;
short n, x, y, dp[2][2 * l3 + 5][2 * l5 + 5], ans1, ans2, v[5000];
double sol = 0;
int getPower(int a, int b)
{
int contor = 0;
while (a % b == 0)
{
++contor;
a = a / b;
}
return contor;
}
void inmul(int a)
{
int t = 0;
for (int i = 1; i <= v[0]; ++i)
{
v[i] = v[i] * a + t;
t += v[i] / 10;
v[i] %= 10;
}
while (t)
{
v[++v[0]] = t % 10;
t /= 10;
}
}
int main()
{
fin >> n;
short a = 0, b = 0;
for (int j = 0; j <= l3 + l3; ++j)
{
for (int k = 0; k <= l5 + l5; ++k)
{
dp[0][j][k] = -inf;
}
}
dp[0][l3][l5] = 0;
for (int i = 1; i <= n; ++i)
{
fin >> x >> y;
short p2 = getPower(x, 2) - getPower(y, 2);
short p3 = getPower(x, 3) - getPower(y, 3);
short p5 = getPower(x, 5) - getPower(y, 5);
a = a + abs(p3);
b = b + abs(p5);
for (int j = 0; j <= l3 + l3; ++j)
{
for (int k = 0; k <= l5 + l5; ++k)
{
dp[i % 2][j][k] = -inf;
}
}
for (int j = -a; j <= a; ++j)
{
for (int k = -b; k <= b; ++k)
{
if (dp[1 - i % 2][j + offset1][k + offset2] != -inf)
{
dp[i % 2][j + offset1][k + offset2] = max(dp[i % 2][j + offset1][k + offset2], dp[1 - i % 2][j + offset1][k + offset2]);
}
if (j - p3 >= -l3 && k - p5 >= -l5 && dp[1 - i % 2][j - p3 + offset1][k - p5 + offset2] != -inf)
{
if (p2 + dp[1 - i % 2][j - p3 + offset1][k - p5 + offset2] > dp[i % 2][j + offset1][k + offset2])
{
dp[i % 2][j + offset1][k + offset2] = p2 + dp[1 - i % 2][j - p3 + offset1][k - p5 + offset2];
}
}
}
}
}
for (int i = 0; i <= l3; ++i)
{
for (int j = 0; j <= l5; ++j)
{
int p2 = dp[n % 2][i + offset1][j + offset2];
if (p2 > 0)
{
double val = log(2.0) * p2 + log(3.0) * i + log(5.0) * j;
if (val > sol)
{
sol = val;
ans1 = i;
ans2 = j;
}
}
}
}
v[0] = 1;
v[1] = 1;
int p2 = dp[n % 2][ans1 + offset1][ans2 + offset2];
for (int i = 1; i <= p2; ++i) inmul(2);
for (int i = 1; i <= ans1; ++i) inmul(3);
for (int i = 1; i <= ans2; ++i) inmul(5);
for (int i = v[0]; i >= 1; --i) fout << v[i];
fin.close();
fout.close();
return 0;
}