#include #include #include // using namespace std; // //#define N 30 //int n; //char c[N + 1]; //int len; // //bool div_2() //{ // if((c[len - 1] - '0') % 2 == 0) // { // return true; // } // return false; //} // //bool div_3() //{ // int sum = 0; // for(int i = 0;i < len;i++) // { // sum += c[i] - '0'; // } // if(sum % 3 == 0) // { // return true; // } // return false; //} // //bool div_5() //{ // if((c[len - 1] - '0') % 5 == 0) // { // return true; // } // return false; //} // //int main() //{ // while(gets(c)) // { // len = (int)strlen(c); // if(div_2() || div_3() || div_5()) // { // cout << "YES" << endl; // } // else // { // cout << "NO" << endl; // } // } // return 0; //} // #define N 100005 int mp[N + 1]; int preSum; int n; int a[N + 1]; int dp[N + 1][2][2]; void init() { for(int i = 0;i <= N;i++) { mp[i] = (1890 * i + 143) % 10007; } } int main() { init(); while(scanf("%d",&n)!= -1) { memset(dp, 0, sizeof(dp)); for(int i = 1;i <= n;i++) { scanf("%d",&a[i]); } for(int i = 1;i <= n;i++) { dp[i][0][0] = dp[i - 1][0][0] + a[i]; dp[i][1][0] = max(dp[i][1][0], dp[i -1][1][0]); dp[i][1][0] = max(dp[i][1][0], dp[i -1][1][1]); dp[i][1][0] += a[i]; /* dp[i][0][1] = max(dp[i][0][1], dp[i - 1][0][0]); dp[i][0][1] += mp[i];*/ dp[i][1][1] = max(dp[i][1][1], dp[i - 1][0][0]); dp[i][1][1] = max(dp[i][1][1], dp[i - 1][1][1]); dp[i][1][1] += mp[a[i]]; } int re = max(dp[n][0][0], dp[n][1][0]); re = max(re, dp[n][1][1]); cout << re << endl; } return 0; }