#include using namespace std; #define modulo 1000000007 #define mod(mod_x) ((((long long)mod_x+modulo))%modulo) #define Inf 2000000000000000000 vector A; long long M; int N; long long get(int now,int t){ if(now==N)return 0LL; static vector> dp(A.size(),vector(2,-Inf)); if(dp[now][t]!=-Inf)return dp[now][t]; if(t==0){ long long X = get(now+1,t^1) + A[now] - M; long long Y; if(A[now]!=1)Y = get(now+1,t) + (A[now]-1) - (1LL-M); else Y = -Inf; dp[now][t] = max(X,Y); } else{ long long X = get(now+1,t^1) - A[now] + M; long long Y; if(A[now]!=1)Y = get(now+1,t) - (A[now]-1) + (1LL-M); else Y = Inf; dp[now][t] = min(X,Y); } return dp[now][t]; } int main(){ cin>>N; cin>>M; A.resize(N); for(int i=0;i