integer::N,i
integer(16),allocatable,dimension(:)::A
integer(16),allocatable,dimension(:,:)::DP
read*,N
allocate(A(N),DP(N,3))
read*,A
DP(1,1)=A(1)
DP(2,2)=A(2)
if(N>=3)DP(3,3)=A(3);DP(3,1)=A(1)+A(3)
do i=4,N
    DP(i,1)=DP(i-2,1)+A(i)
    DP(i,2)=max( DP(i-2,2)+A(i), DP(i-3,1)+A(i) )
    DP(i,3)=max( DP(i-2,3)+A(i), DP(i-3,2)+A(i), DP(i-4,1)+A(i) )
end do
print"(i0)",merge(max(DP(N,3),DP(N-1,2),DP(N-2,1)),max(DP(N,2),DP(N-1,1)),btest(N,0))
end