#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;


int main(void){
  int n;
  cin >> n;

  vector<long long int> a(n);
  for(int i = 0; i < n; i++){ cin >> a[i]; }

  vector<vector<long long int> > dp(n, vector<long long int>(n, 0));
  for(int i = 0; i < n; i++){ dp[i][(i + 1) % n] = a[i]; }
  
  for(int k = 1; k < n; k++){
    for(int i = 0; i < n; i++){
      int leftstart = (i - 1 + n) % n;
      int end = (i + k) % n;
      int rightend = (i + k + 1) % n;

      // ??????DP?????????
      // ??????[i, i+k)????????§????£?????????????????????¨????????????
      // ?¬?????£???????????£????a[i-1]???a[i+k]????????????????????§??????
      
      if(dp[i][end] == 0){ continue; }

      // ?£????????????????????????¶??°?????£??????????¬????JOI???????????????
      if(k % 2 == 0){
        dp[leftstart][end] = max(dp[leftstart][end], a[leftstart] + dp[i][end]);
        dp[i][rightend] = max(dp[i][rightend], dp[i][end] + a[end]); 
      }
      // ?£???????????????????????\???°?????£??????????¬????IOI??????????????????
      else{
        if(a[leftstart] > a[end])
          dp[leftstart][end] = max(dp[leftstart][end], dp[i][end]);
        else
          dp[i][rightend] = max(dp[i][rightend], dp[i][end]);
      }
    }
  }
  
  long long int ans = 0;
  for(int i = 0; i < n; i++){ ans = max(ans, dp[i][i]); }
  cout << ans << endl;

  return 0;
}