(*
	IV окружной этап Всероссийской олимпиады школьников по информатике
	24 - 28 марта 2006 г.
	г. Петрозаводск

	Задача B. Пекка развлекается
	Авторы: Д. Власов, А. Николаевский, В.А. Кузнецов
	Решение: А. Голубев
*)

{$A8,B-,C+,D+,E-,F-,G+,H+,I+,J-,K-,L+,M-,N+,O-,P+,Q+,R+,S-,T-,U-,V+,W-,X+,Y+,Z1}
{$MINSTACKSIZE $00004000}
{$MAXSTACKSIZE $00100000}
{$IMAGEBASE $00400000}
{$APPTYPE CONSOLE}


// Good solution. 100 points.

const base=10;

var qc:array[0..100,0..100,0..100]of longint;
    res,cur,x:array[0..300]of longint;
    n,i,j,k,l,q,c:longint;

begin
assign(input,'funny.in');
assign(output,'funny.out');
read(n);
if n>100 then writeln('Error in tests!');
for i:=1 to n do
  begin
  read(x[i]);
  if x[i]>100 then writeln('Error in tests!');
  end;
for i:=0 to 100 do qc[i,0,0]:=1;
for i:=1 to 100 do
  for j:=1 to 100 do
    begin
    for k:=0 to 100 do
      begin
      qc[i,j,k]:=qc[i-1,j,k]+qc[i-1,j-1,k];
      end;
    for k:=0 to 100 do
      if qc[i,j,k]>=base then
        begin
        inc(qc[i,j,k+1],qc[i,j,k] div base);
        qc[i,j,k]:=qc[i,j,k] mod base;
        end;
    end;
res[0]:=1;
q:=x[n]-1;
c:=0;
for l:=n-1 downto 1 do
  begin
  fillchar(cur,sizeof(cur),0);
  inc(q,x[l]);
  inc(c,x[l+1]);
  for i:=0 to 100 do
    for j:=0 to 100 do
      inc(cur[i+j],res[i]*qc[q,c,j]);
  for k:=0 to 100 do
      if cur[k]>=base then
        begin
        inc(cur[k+1],cur[k] div base);
        cur[k]:=cur[k] mod base;
        end;
  for k:=0 to 100 do
    res[k]:=cur[k];
  end;
l:=100;
while res[l]=0 do dec(l);
for i:=l downto 0 do write(res[i]);
if q>100 then writeln('Error in tests!');
writeln; 
end.
