/*
#include <fstream>
#include <cmath>
using namespace std;
ifstream F("aliens.in");
ofstream G("aliens.out");
#define Cl(x) x.close();
inline void CloseFiles() {Cl(F)Cl(G)}
#define oo 400000111
#define max(a,b) ( ( a>b ) ? a : b )
#define min(a,b) ( ( a<b ) ? a : b )
#define Dim 55
#define Max3 950
#define Max5 650
int Pwr2[Dim],Pwr3[Dim],Pwr5[Dim];
int N,X,Y;
int Mat[Dim][Max3][Max5];
int lim3,lim5,res[Max3];
void mul(int a[], int b)
{
int i, t = 0;
for (i = 1; i <= a[0] || t; ++i, t /= 10)
a[i] = (t += a[i] * b ) % 10;
a[0] = i-1;
}
int main(void)
{
lim3=lim5=-oo;
F>>N;
for (int i=1;i<=N;++i)
{
F>>X>>Y;
while ( !X%2 ) X/=2,++Pwr2[i];
while ( !X%3 ) X/=3,++Pwr3[i];
while ( !X%5 ) X/=5,++Pwr5[i];
while ( !Y%2 ) Y/=2,--Pwr2[i];
while ( !Y%3 ) Y/=3,--Pwr3[i];
while ( !Y%5 ) Y/=5,--Pwr5[i];
lim3=max(lim3,Pwr3[i]);
lim5=max(lim5,Pwr5[i]);
}
for (int i=1;i<=N;++i)
for (int j=1;j<=lim3;++j)
for (int ii=1;ii<=lim5;++ii)
Mat[i][j][ii]=max( Mat[i-1][j][ii], Mat[i-1][ j-Pwr3[i] ][ ii-Pwr5[i]+Pwr2[i] ] );
double lg2=log(2),lg3=log(3),lg5=log(5),Max=-1;
int rez2,rez3,rez5;
for (int i=1;i<=N;++i)
for (int j=1;j<=lim3;++j)
for (int ii=1;ii<=lim5;++ii)
{
if ( Mat[i][j][ii] < 0 ) continue;
double Val=lg2*Mat[i][j][ii]+lg3*j+lg5*ii;
if ( Val < Max )
{
Max=Val;
rez2=Mat[i][j][ii];
rez3=j;
rez5=ii;
}
}
res[0] = res[1] = 1;
for (int i = 1; i <= rez2; ++i) mul(res, 2);
for (int i = 1; i <= rez3; ++i) mul(res, 3);
for (int i = 1; i <= rez5; ++i) mul(res, 5);
for (int i = res[0]; i > 0; --i)
G<<res[i];
G<<"\n";
CloseFiles();
}
*/
#include <cstdio>
#include <cmath>
using namespace std;
#define FIN "aliens.in"
#define FOUT "aliens.out"
#define MAX_P3 18
#define MAX_P5 12
#define SHIFT3 950
#define SHIFT5 650
#define MAX_LEN 10000
#define oo 127
#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))
int N, res[MAX_LEN];
char bst[2*SHIFT3+1][2*SHIFT5+1];
void mul(int a[], int b)
{
int i, t = 0;
for (i = 1; i <= a[0] || t; ++i, t /= 10)
a[i] = (t += a[i]*b) % 10;
a[0] = i-1;
}
int main(void)
{
int i, j, k, jj, kk, x, p2, p3, p5;
int l3, r3, s3, l5, r5, s5, min3, min5, max3, max5;
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
scanf("%d", &N);
for (i = 0; i <= 2*SHIFT3; ++i)
for (j = 0; j <= 2*SHIFT5; ++j)
bst[i][j] = -oo;
bst[SHIFT3][SHIFT5] = 0;
min3 = max3 = min5 = max5 = 0;
for (i = 0; i < N; ++i)
{
scanf("%d", &x);
for (p2 = 0; !(x%2); x /= 2) ++p2;
for (p3 = 0; !(x%3); x /= 3) ++p3;
for (p5 = 0; !(x%5); x /= 5) ++p5;
scanf("%d", &x);
for (; !(x%2); x /= 2) --p2;
for (; !(x%3); x /= 3) --p3;
for (; !(x%5); x /= 5) --p5;
l3 = p3 < 0 ? min3 : max3;
r3 = p3 < 0 ? max3 : min3;
s3 = p3 < 0 ? +1 : -1;
l3 += SHIFT3; r3 += SHIFT3;
l5 = p5 < 0 ? min5 : max5;
r5 = p5 < 0 ? max5 : min5;
s5 = p5 < 0 ? +1 : -1;
l5 += SHIFT5; r5 += SHIFT5;
for (j = l3, jj = l3+p3; j != r3+s3; j += s3, jj += s3)
for (k = l5, kk = l5+p5; k != r5+s5; k += s5, kk += s5)
{
if (bst[j][k] == -oo) continue;
if (bst[jj][kk] < (x = bst[j][k]+p2))
bst[jj][kk] = x;
}
min3 = min(min3, min3+p3);
max3 = max(max3, max3+p3);
min5 = min(min5, min5+p5);
max5 = max(max5, max5+p5);
}
double lg2 = log(2), lg3 = log(3), lg5 = log(5), max_val = -1;
for (i = max3+SHIFT3; i >= SHIFT3; --i)
for (j = max5+N+SHIFT5; j >= SHIFT5; --j)
{
if (bst[i][j] < 0) continue;
double t = (i-SHIFT3)*lg3+(j-SHIFT5)*lg5+bst[i][j]*lg2;
if (max_val < t)
{
max_val = t;
p2 = bst[i][j];
p3 = i-SHIFT3;
p5 = j-SHIFT5;
}
}
res[0] = res[1] = 1;
for (i = 1; i <= p2; ++i) mul(res, 2);
for (i = 1; i <= p3; ++i) mul(res, 3);
for (i = 1; i <= p5; ++i) mul(res, 5);
for (i = res[0]; i > 0; --i)
printf("%d", res[i]);
printf("\n");
return 0;
}