#include using namespace std; #define REP(i, n) for(int i = 0; i < n; i++) int main(){ cin.tie(0); ios::sync_with_stdio(false); int n; cin >> n; vector V(n); REP(i, n) cin >> V[i]; int dp[1001][2]; dp[0][0] = 0; dp[0][1] = V[0]; //V[0]を選ぶとき dp[1][0] = V[0]; //V[1]を選ばないとき(選ばないのでこここまでの最大値はV[0]) dp[1][1] = V[1]; //V[1]を選ぶとき(ここでmax(V[0], V[1])と考えたが、V[1]のみを選ぶ場合を記録している) for(int i = 2; i < n; i++){ dp[i][0] = max(dp[i - 1][1], dp[i - 2][1]); dp[i][1] = max(dp[i - 1][0] + V[i], dp[i - 2][0] + V[i]); } cout << max(dp[n - 1][0], dp[n - 1][1]) << endl; return 0; }