#include<iostream>
#include<algorithm>
using namespace std;
int s(int arr[],int i,int j);
int f(int arr[],int i,int j){
if(i==j) return arr[i];
return max(arr[i]+s(arr,i+1,j),arr[j]+s(arr,i,j-1));
}
int s(int arr[],int i,int j){
if(i==j) return 0;
return min(f(arr,i+1,j),f(arr,i,j-1));
}
int main(){
int a[]={1,2,2,3};
int x=f(a,0,3);
cout<<x<<endl;
}
#include<algorithm>
using namespace std;
int s(int arr[],int i,int j);
int f(int arr[],int i,int j){
if(i==j) return arr[i];
return max(arr[i]+s(arr,i+1,j),arr[j]+s(arr,i,j-1));
}
int s(int arr[],int i,int j){
if(i==j) return 0;
return min(f(arr,i+1,j),f(arr,i,j-1));
}
int main(){
int a[]={1,2,2,3};
int x=f(a,0,3);
cout<<x<<endl;
}