Given is an integer sequence A_1, ..., A_N of length N.

We will choose exactly \left\lfloor \frac{N}{2} \right\rfloor elements from this sequence so that no two adjacent elements are chosen.

Find the maximum possible sum of the chosen elements.

Here \lfloor x \rfloor denotes the greatest integer not greater than x.

Constraints

* 2 \leq N \leq 2\times 10^5
* |A_i|\leq 10^9
* All values in input are integers.

Input

Input is given from Standard Input in the following format:


N
A_1 ... A_N


Output

Print the maximum possible sum of the chosen elements.

Examples

Input

6
1 2 3 4 5 6


Output

12


Input

5
-1000 -100 -10 0 10


Output

0


Input

10
1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000


Output

5000000000


Input

27
18 -28 18 28 -45 90 -45 23 -53 60 28 -74 -71 35 -26 -62 49 -77 57 24 -70 -93 69 -99 59 57 -49


Output

295
#include <bits/stdc++.h>

#define int long long

using namespace std;

const int maxn = 200005;
map<int,int> dp[maxn];
int a[maxn];
int n;

int recur(int pos, int took) {
    if (dp[pos].count(took) != 0) return dp[pos][took];
    if (took == n/2) return 0;
    if (pos >= n) return -1e18;
    int rem = ceil((double)(n-pos)/2);
    if (took+rem < n/2) return -1e18;
    int res = max(recur(pos+1, took), recur(pos+2, took+1)+a[pos]);
    dp[pos][took] = res;
    return res;
}

signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin >> n;
    for (int i = 0; i < n; i++) cin >> a[i];
    int res = recur(0,0);
    cout << res << '\n';
}
/*

 */