const
maxn=100;
var
a:array[0..maxn+1] of longint;
min,n:longint;
procedure init;
var
i:longint;
begin
readln(n);
for i:=1 to n do
read(a[i]);
min:=maxlongint;
end;
function max(x,y:longint):longint;
begin
if x>y then exit(x)
else exit(y);
end;
procedure dfs(dep,t1,t2:longint);
var
t:longint;
begin
if dep>n then
begin
t:=max(t1,t2);
if t<min then min:=t;
exit;
end;
if max(t1,t2)>min then exit;
dfs(dep+1,t1+a[dep+1],t2);
dfs(dep+1,t1,t2+a[dep+1]);
end;
begin
assign(input,'d.in');reset(input);
assign(output,'d.out');rewrite(output);
init;
dfs(0,0,0);
writeln(min);
close(input); close(output);
end.