def f(sum1,cs,c1,c2,c3)
s3=sum1-cs[c3]+cs[c1]
s2=cs[c3]-cs[c2]
s1=cs[c2]-cs[c1]
return [s3,s2,s1].min
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=[sum-cs[c3]+cs[c1],cs[c3]-cs[c2]].min
s3R=[sum-cs[c3+1]+cs[c1],cs[c3+1]-cs[c2]].min
#p [c1,c2,c3,s3L,s3R]
if s3L<s3R then
ans=[ans,f(sum,cs,c1,c2,c3+1)].max
c3+=1
else
ans=[ans,f(sum,cs,c1,c2,c3)].max
break
end
end
s2L=f(sum,cs,c1,c2,c3)
s2R=f(sum,cs,c1,c2+1,c3)
if s2L<s2R
c2+=1
else
break
end
end
c1+=1
end
puts ans
ZGVmIGYoc3VtMSxjcyxjMSxjMixjMykKCXMzPXN1bTEtY3NbYzNdK2NzW2MxXQoJczI9Y3NbYzNdLWNzW2MyXQoJczE9Y3NbYzJdLWNzW2MxXQoJcmV0dXJuIFtzMyxzMixzMV0ubWluCmVuZAoKY3M9WzBdCnN1bT0wCm49Z2V0cy50b19pCm4udGltZXN7CglzdW0rPWdldHMudG9faQoJY3M8PHN1bQp9CmMxPTAKYzI9MQphbnM9MAoKCmMxPTAKYzI9MQpjMz0yCndoaWxlIGMxPG4tMgoJYzI9YzErMSBpZiBjMjw9YzEKCXdoaWxlIGMyPG4tMQoJCWMzPWMyKzEgaWYgYzM8PWMyCgkJd2hpbGUgYzM8bgoJCQluZXh0IGlmIGMzKzE9PW4gJiYgYzE9PTAKCQkJczNMPVtzdW0tY3NbYzNdK2NzW2MxXSxjc1tjM10tY3NbYzJdXS5taW4KCQkJczNSPVtzdW0tY3NbYzMrMV0rY3NbYzFdLGNzW2MzKzFdLWNzW2MyXV0ubWluCgkJCSNwIFtjMSxjMixjMyxzM0wsczNSXQoJCQlpZiBzM0w8czNSIHRoZW4KCQkJCWFucz1bYW5zLGYoc3VtLGNzLGMxLGMyLGMzKzEpXS5tYXgKCQkJCWMzKz0xCgkJCWVsc2UKCQkJCWFucz1bYW5zLGYoc3VtLGNzLGMxLGMyLGMzKV0ubWF4CgkJCQlicmVhawoJCQllbmQKCQllbmQKCQlzMkw9ZihzdW0sY3MsYzEsYzIsYzMpCgkJczJSPWYoc3VtLGNzLGMxLGMyKzEsYzMpCgkJaWYgczJMPHMyUgkKCQkJYzIrPTEKCQllbHNlCgkJCWJyZWFrCgkJZW5kCgllbmQKCWMxKz0xCmVuZApwdXRzIGFucw==