//  #牛客春招刷题训练营# https://www.nowcoder.com/discuss/726480854079250432
#include <iostream>
#include <vector>
using namespace std;

int main(){
  ios_base::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
  int n;
  cin >> n;
  vector<vector<int>> dp(n, vector<int>(2, 0));//---------dp[i][0]表示不加上第i个节点的从后往前到第i个节点的最大值,dp[i][1]表示加上第i个节点的...(其实从前往后也是可以的)
  vector<int> a(n);
  for (int i = 0; i < n; i++) cin >> a[i];
  dp[n - 1][1] = a[n - 1];//---------初始化最后一位
  for (int i = n - 2; i >= 0; i--){
    dp[i][0] = max(dp[i + 1][0], dp[i + 1][1]);//----------------------状态转移方程,如果这次不选那么下个数选不选都可以
    dp[i][1] = dp[i + 1][0] + a[i];//----------如果这次选下次就一定不能选
  }
  cout << max(dp[0][0], dp[0][1]);
  return 0;
}