VAR i,j,n,l,sum,big:integer;ok:boolean;
fenshu:integer;
a:array[0..62]of integer;
v:array[0..3010]of boolean;
gun:array[0..3010]of integer;
procedure dfs(ii:integer);
var iii:integer;
begin
if ii=n+1 then
begin
ok:=true;
for iii:=2 to fenshu do
if gun[iii]<>gun[iii-1] then
begin
ok:=false;
break;
end;
if ok then begin write(i);halt;end
else exit;
end;
for iii:=1 to fenshu do
if gun[iii]+a[ii]<=i then
begin
gun[iii]:=gun[iii]+a[ii];
dfs(ii+1);
gun[iii]:=gun[iii]-a[ii];
end;
end;
begin
sum:=0;big:=0;
readln(n);
for i:=1 to n do
begin
read(a[i]);
if big<a[i] then big:=a[i];
inc(sum,a[i]);
end;
for i:=1 to sum do v[i]:=false;
v[1]:=true;
v[sum]:=true;
for i:=2 to sum-1 do
if sum mod i =0 then v[i]:=true;
i:=big;
while not v[i] do inc(i);
l:=i;
for i:=l to sum do
if v[i] then
begin
fenshu:=sum div i;
for j:=0 to fenshu do gun[j]:=0;
gun[0]:=i;
dfs(1);
end;
end.