def f(sum1,cs,c1,c2,c3,mode)
s3=sum1-cs[c3]+cs[c1]
s2=cs[c3]-cs[c2]
s1=cs[c2]-cs[c1]
if mode==true then
return [s3,s2,s1].min
else
return [s3,s2].min
end
end
cs=[0]
sum=0
n=gets.to_i
n.times{
sum+=gets.to_i
cs<<sum
}
c1=0
c2=1
ans=0
c1=0
c2=1
c3=2
while c1<n-2
c2=c1+1 if c2<=c1
while c2<n-1
c3=c2+1 if c3<=c2
while c3<n
next if c3+1==n && c1==0
s3L=f(sum,cs,c1,c2,c3+1,false)
s3R=f(sum,cs,c1,c2,c3,false)
#p [c1,c2,c3,s3L,s3R]
if s3L<=s3R then
ans=[ans,f(sum,cs,c1,c2,c3+1,false)].max
c3+=1
else
ans=[ans,f(sum,cs,c1,c2,c3,false)].max
break
end
end
s2L=f(sum,cs,c1,c2,c3,true)
s2R=f(sum,cs,c1,c2+1,c3,true)
if s2L<=s2R
c2+=1
else
break
end
end
c1+=1
end
puts ans
ZGVmIGYoc3VtMSxjcyxjMSxjMixjMyxtb2RlKQoJczM9c3VtMS1jc1tjM10rY3NbYzFdCglzMj1jc1tjM10tY3NbYzJdCglzMT1jc1tjMl0tY3NbYzFdCglpZiBtb2RlPT10cnVlIHRoZW4KCQlyZXR1cm4gW3MzLHMyLHMxXS5taW4KCWVsc2UKCQlyZXR1cm4gW3MzLHMyXS5taW4KCWVuZAplbmQKCmNzPVswXQpzdW09MApuPWdldHMudG9faQpuLnRpbWVzewoJc3VtKz1nZXRzLnRvX2kKCWNzPDxzdW0KfQpjMT0wCmMyPTEKYW5zPTAKCgpjMT0wCmMyPTEKYzM9Mgp3aGlsZSBjMTxuLTIKCWMyPWMxKzEgaWYgYzI8PWMxCgl3aGlsZSBjMjxuLTEKCQljMz1jMisxIGlmIGMzPD1jMgoJCXdoaWxlIGMzPG4KCQkJbmV4dCBpZiBjMysxPT1uICYmIGMxPT0wCgkJCXMzTD1mKHN1bSxjcyxjMSxjMixjMysxLGZhbHNlKQoJCQlzM1I9ZihzdW0sY3MsYzEsYzIsYzMsZmFsc2UpCgkJCSNwIFtjMSxjMixjMyxzM0wsczNSXQoJCQlpZiBzM0w8PXMzUiB0aGVuCgkJCQlhbnM9W2FucyxmKHN1bSxjcyxjMSxjMixjMysxLGZhbHNlKV0ubWF4CgkJCQljMys9MQoJCQllbHNlCgkJCQlhbnM9W2FucyxmKHN1bSxjcyxjMSxjMixjMyxmYWxzZSldLm1heAoJCQkJYnJlYWsKCQkJZW5kCgkJZW5kCgkJczJMPWYoc3VtLGNzLGMxLGMyLGMzLHRydWUpCgkJczJSPWYoc3VtLGNzLGMxLGMyKzEsYzMsdHJ1ZSkKCQlpZiBzMkw8PXMyUgkKCQkJYzIrPTEKCQllbHNlCgkJCWJyZWFrCgkJZW5kCgllbmQKCWMxKz0xCmVuZApwdXRzIGFucw==