#include<bits/stdc++.h>
using namespace std;
long long n,x,l,maxx,pre,post;
const int N = 1e5+10;
//a数组为记录值,b数组为记录以a[i]结尾的小于x的最长连续子序列长度
long long a[N], b[N];
long long res;
bool flag;
int main(){
cin>>n>>x;
int i = 1;
for(i = 1; i <= n; i++) cin>>a[i];
for(i = 1; i <= n; i++){
//当a[i]小于x时,更新b和post,其中post为这段子序列替换成x能增长的值
if(a[i] < x){
flag = false;
b[i] = b[i-1]+1;
post = post+x-a[i];
}else{
b[i] = 0;
//pre记录前一个post,如果post大于pre,说明替换这段是能获得更大的值的,所以进行替换,更新maxx和l,以便最后确定更新的地方和长度
if(post > pre && !flag){
maxx = b[i-1];
l = i-1;
pre = post;
flag = true;
}
post = 0;
}
}
//防止更新的位置是在最后的部分
if(post > pre && !flag){
maxx = b[i-1];
l = i-1;
pre = post;
flag = true;
}
//进行更新
for(i = l - maxx +1; i <= l; i++) a[i] = x;
//更新后求和
for(i = 1; i <= n; i++){
res += a[i];
}
printf("%lld",res);
return 0;
}