#include //#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //using namespace atcoder; using namespace std; using ll = long long; #define all(A) A.begin(),A.end() using vll = vector; #define rep(i, n) for (long long i = 0; i < (long long)(n); i++) using Graph = vector>>; vector seen; bool C = true; vector dist; ll mod =1e9+7; int op(int a, int b) { return min(a, b); } int e() { return int(1e9); } int main() { ll N; cin >> N; vll V(N); rep(i, N)cin >> V[i]; vector DP(N, vll(2,0)); DP[0][0] = V[0]; rep(i, N - 1) { DP[i + 1][0] = DP[i][1] + V[i + 1]; DP[i + 1][1] = max(DP[i][1] ,DP[i][0]); } cout << max(DP[N - 1][0], DP[N - 1][1]) << endl; }