#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <map>
using namespace std;
#define maxim(a, b) ((a > b) ? a : b)
#define mp make_pair
#define PII pair<int, int>
#define f first
#define s second
#define LN2 0.69314718
#define LN3 1.09861228
#define LN5 1.60943791
#define NMax 505
typedef int hugeNR[10005];
typedef struct { int x, y, z; } triplet;
int N, x[NMax], y[NMax], sz;
PII q[2000000];
triplet E[NMax];
double bst; int dx = -1, dy = -1, dz = -1;
hugeNR R;
map< PII, int > M, old;
void inm(hugeNR R, int nr)
{
int i, t = 0;
for (i = 1; i <= R[0] || t; i++, t /= 10)
R[i] = (t += R[i] * nr) % 10;
R[0] = i-1;
}
int main(void)
{
int i, j, crt, prev, ok, new_size = 0, val;
int f3, f5;
double F;
freopen("aliens.in", "r", stdin);
freopen("aliens.out", "w", stdout);
scanf("%d", &N);
for (i = 1; i <= N; i++)
scanf("%d %d", &x[i], &y[i]);
for (i = 1; i <= N; i++)
{
while (x[i] % 2 == 0) E[i].x++, x[i] /= 2;
while (x[i] % 3 == 0) E[i].y++, x[i] /= 3;
while (x[i] % 5 == 0) E[i].z++, x[i] /= 5;
while (y[i] % 2 == 0) E[i].x--, y[i] /= 2;
while (y[i] % 3 == 0) E[i].y--, y[i] /= 3;
while (y[i] % 5 == 0) E[i].z--, y[i] /= 5;
}
sz = 1; q[1].f = q[1].s = 0;
M[ mp(0, 0) ] = 0;
for (i = 1; i <= N; i++)
{
// printf("%d %d\n", i, sz);
old.clear();
for (j = 1; j <= sz; j++)
old[ q[j] ] = M[ q[j] ];
for (j = 1, new_size = sz; j <= sz; j++)
{
f3 = q[j].f + E[i].y;
f5 = q[j].s + E[i].z;
if (!M[ mp(f3, f5) ])
{
M[ mp(f3, f5) ] = -9999999;
q[++new_size] = mp(f3, f5);
}
val = E[i].x + old[ q[j] ];
if (M[ mp(f3, f5) ] < val)
M[ mp(f3, f5) ] = val;
}
sz = new_size;
}
for (i = 1; i <= sz; i++)
if (q[i].f >= 0 && q[i].s >= 0 && (ok = M[ q[i] ]) >= 0)
{
F = ok * LN2 + q[i].f * LN3 + q[i].s * LN5;
if (F > bst)
bst = F, dx = ok, dy = q[i].f, dz = q[i].s;
}
if (dx == -1)
{
printf("FARA SOLUTIE!\n");
return 0;
}
/* for (i = 1; i <= sz; i++)
if (q[i].f == 2 && q[i].s == 0)
printf("DA %d\n", M[ q[i] ]);*/
R[0] = R[1] = 1;
for (i = 1; i <= dx; i++)
inm(R, 2);
for (i = 1; i <= dy; i++)
inm(R, 3);
for (i = 1; i <= dz; i++)
inm(R, 5);
for (i = R[0]; i >= 1; i--)
printf("%d", R[i]);
printf("\n");
return 0;
}