type LongNum = array[1..25] of longint;
type TreeElement = record
     Num:longint;
     R,L:longint; {podstromy}
     end;
type Cislo = record
             Cifry:array[1..100000] of integer;
	     Delka:longint;
	     end;
const Primes:LongNum = (2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97);
var Numbers:array[1..100] of LongNum;
    Fact:array[0..100] of LongNum;
    Tree:array[1..100] of TreeElement;
    n,i:longint;
    val,pos,newpos,sz:longint;
    Res:LongNum;
procedure GenNumbers;
var i,j,k:longint;
begin
   for i:=1 to 100 do begin
      k:=i;
      for j:=1 to 25 do begin
         Numbers[i][j]:=0;
{	 write('[',Primes[j],']');{}
	 while (k mod Primes[j] = 0) do begin
	    k:=k div Primes[j];
{	    write(' j');{}
	    inc(Numbers[i][j]);
	 end;
      end;
{      writeln;{}
   end;
   for i:=1 to 25 do Fact[0][i]:=0;
   for i:=1 to 100 do for j:=1 to 25 do Fact[i][j]:=Fact[i-1][j]+Numbers[i][j];
end;
procedure WT(p:longint);
begin
   if (p=-1) then exit;
   write('[',Tree[p].Num);
   write('(');WT(Tree[p].L);write(')(');WT(Tree[p].R);write(')]');
end;
procedure LongMul(var L1:LongNum;var L2:LongNum;var L3:longNum);
var i:longint;
begin
   for i:=1 to 25 do L3[i]:=L1[i]+L2[i];
end;
procedure LongDiv(var L1:LongNum;var L2:LongNum;var L3:longNum);
var i:longint;
begin
   for i:=1 to 25 do L3[i]:=L1[i]-L2[i];
end;
procedure LongCopy(var L1:LongNum;var L2:longnum);
var i:longint;
begin
   for i:=1 to 25 do L2[i]:=L1[i];
end;
procedure Compute(var Res:LongNum;var size:longint;pos:longint);
var Le,Ri:LongNum;
    Ls,Rs:longint;
    Sw1,Sw2:LongNum;
    i:longint;
begin
   if pos = -1 then begin
      LongCopy(Numbers[1],Res);
      size:=0;
      exit;
   end;
   Compute(Le,Ls,Tree[pos].L);
   Compute(Ri,Rs,Tree[pos].R);
{   writeln('Cmp',Ls,'/',Rs);}
   LongMul(Le,Ri,Sw1);
   LongMul(Sw1,Fact[Rs+Ls],Sw2);
   LongDiv(Sw2,Fact[Rs],Sw1);
   LongDiv(Sw1,Fact[Ls],Res);
   size:=Ls+Rs+1;
end;
procedure WNum(var l:LongNum);
var i:longint;
begin
   for i:=1 to 25 do writeln(Primes[i],':',l[i]);
end;
procedure MulCislo(var C1:cislo;var C2:cislo;var c3:cislo);
var i,k:longint;
    Prenos:longint;
    Pos:longint;
begin
   C3.Delka:=0;
   for i:=1 to C2.Delka do begin
      Prenos:=0;
      Pos:=i-1;
      for k:=1 to C1.Delka do begin
         Prenos:=Prenos+C1.Cifry[k]*C2.Cifry[i];
	 inc(Pos);
	 if (Pos > C3.Delka) then begin
	    inc(C3.Delka);
	    C3.Cifry[C3.Delka]:=0;
	 end;
	 Prenos:=Prenos + C3.Cifry[Pos];
	 C3.Cifry[pos]:=Prenos mod 10;
	 Prenos:=Prenos div 10;
      end;
      while Prenos > 0 do begin
         inc(Pos);
	 if (Pos > C3.Delka) then begin
	    inc(C3.Delka);
	    C3.Cifry[C3.Delka]:=0;
	 end;
	 Prenos:=Prenos + C3.Cifry[Pos];
	 C3.Cifry[pos]:=Prenos mod 10;
	 Prenos:=Prenos div 10;
      end;
   end;
end;
procedure MakeCislo(var c:cislo;i:longint);
var j:longint;
begin
  c.delka:=0;
  while (i>0) do begin
     inc(c.delka);
     c.cifry[c.delka]:=i mod 10;
     i:=i div 10;
  end;
end;
procedure Pow2(var zaklad:cislo;var res:cislo;p:longint);
var i:longint;
    c2:cislo;
begin
   if (p = 0) then exit;
   if (p mod 2 = 1) then begin
      MulCislo(res,zaklad,c2);
      res.delka:=c2.delka;
      for i:=1 to c2.delka do res.cifry[i]:=c2.cifry[i];
   end;
   p:=p div 2;
   MulCislo(zaklad,zaklad,c2);
   Pow2(c2,res,p);
end;
procedure WriteNum(var l:LongNum);
var c1,cc:cislo;
    i:longint;
begin
   MakeCislo(cc,1);
   for i:=1 to 25 do begin
      MakeCislo(c1,Primes[i]);
      Pow2(c1,cc,l[i]);
   end;
   for i:=cc.delka downto 1 do write(cc.cifry[i]);
end;
begin
  readln(n);
  GenNumbers;
  while (n<>0) do begin
     for i:=1 to n do begin
        read(val);
	Tree[i].Num:=val;
	Tree[i].R:=-1;
	Tree[i].L:=-1;
	if (i<>1) then begin
	   newpos:=1;
	   while (newpos<>-1) do begin
	      pos:=newpos;
	      if (val < Tree[pos].Num) then 
	         newpos:=Tree[pos].L
	      else
	         newpos:=Tree[pos].R;
	   end;
	   if (val<Tree[pos].Num) then Tree[pos].L:=i
	   else Tree[pos].R:=i;
	end;
     end;
{     WT(1);}
     Compute(Res,sz,1);
     WriteNum(Res);writeln;
{     WNum(Res);{}
     readln(n);
  end;
end.