// 动态规划即可
// 考虑i点:dp[i - 2] + datas[i] > dp[i - 1], 否则不考虑,i点dp值为dp[i - 1]
#include <iostream>
#include <vector>
using namespace std;


void MainFunction(vector<int>& datas) {
    int n = datas.size();
    vector<int> dp;
    // 初始化第一个和第二个
    dp.push_back(datas[0]);
    dp.push_back(max(datas[0], datas[1]));
    for (int i = 2; i < n; i++){
        dp.push_back(max(dp[i - 2] + datas[i], dp[i - 1]));
    }

    cout << *(dp.end()-1);

    return;
}


int main() {
    vector<int> datas;
    int x;
    while (cin >> x) {
        datas.push_back(x);
    }

    MainFunction(datas);

    return 0;
}