#include<iostream>
#include<algorithm>
#include<string.h>
#include<climits>
using namespace std;
const int N = 300030;
long long int h[N],ph[N],hp[N],idx[N],Size,m;
void heap_swap(int a,int b){
swap(h[a],h[b]);
swap(ph[hp[a]],ph[hp[b]]);
swap(hp[a],hp[b]);
}
void down(int u){
int t = u;
if(u * 2 <= Size && h[u * 2] > h[u]) t = u * 2;
if(u * 2 + 1 <= Size && h[u * 2 + 1] > h[u]) t = u * 2 + 1;
if(u != t){
heap_swap(u,t);
down(t);
}
}
void up(int u){
while(u / 2 && h[u / 2] < h[u]){
heap_swap(u / 2,u);
u >>= 1;
}
}
int main(){
int n,k;
int j;
int flag = 0;
memset(idx,-300030,sizeof idx);
cin >> n >> k;
while(n -- ){
Size ++ ;
m ++ ;
ph[m] = Size;hp[Size] = m;
cin >> h[Size];
up(Size);
}
int ans = 0;
while(k -- && h[1] > 0){
for(int i = 0;i <= j;i ++ ) {
if(((hp[1] - idx[i]) == 1) || ((idx[i] - hp[1]) == 1)) {
heap_swap(1,Size -- );
down(1);
flag = 1;
k ++ ;
break;
}
}
if(!flag){
idx[j ++ ] = hp[1];
ans += h[1];
heap_swap(1,Size --);
down(1);
}
flag = 0;
}
cout << ans;
return 0;
}