program main
  implicit none

  integer(16) :: n, i
  integer(16), allocatable :: a(:,:), dp(:,:)

  read(*,*) n
  allocate(a(3,n))
  allocate(dp(3,n))
  read(*,*) a

  do i = 1, n
     dp(1,i) = 0
     dp(2,i) = 0
     dp(3,i) = 0
  end do

  dp(1,1) = a(1,1)
  dp(2,1) = a(2,1)
  dp(3,1) = a(3,1)

  do i = 2, n
     dp(1,i) = max(dp(1,i), dp(2,i-1) + a(1,i))
     dp(1,i) = max(dp(1,i), dp(3,i-1) + a(1,i))
     dp(2,i) = max(dp(2,i), dp(1,i-1) + a(2,i))
     dp(2,i) = max(dp(2,i), dp(3,i-1) + a(2,i))
     dp(3,i) = max(dp(3,i), dp(1,i-1) + a(3,i))
     dp(3,i) = max(dp(3,i), dp(2,i-1) + a(3,i))
  end do

  write(*,*) max(dp(1,n), dp(2,n), dp(3,n))

end program main
