#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
#define x first
#define y second
#define bg begin()
#define ed end()
#define pb push_back
#define mp make_pair
#define sz(a) int((a).size())
#define R(i,a,b) for(int i(a),i##E(b);i<i##E;i++)
#define L(i,a,b) for(int i((b)-1),i##E((a)-1);i>i##E;i--)
const int iinf=0x3f3f3f3f;
const ll linf=0x3f3f3f3f3f3f3f3f;
//Data
const int N=2e5;
int n,m,a[N];
pair<int,int> e[N];
void del(int i){e[e[i].x].y=e[i].y,e[e[i].y].x=e[i].x,e[i]=mp(-1,-1);}
priority_queue<pair<ll,int>> q;
//Main
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>n>>m;
R(i,0,n) cin>>a[i],e[i]=mp((i-1+n)%n,(i+1)%n),q.push(mp(a[i],i));
if((m<<1)>n) return cout<<"Error!\n",0;
int ns(0);
while(m){
int i(q.top().y); q.pop();
if(!~e[i].x) continue;
m--,ns+=a[i],a[i]=-a[i]+a[e[i].x]+a[e[i].y];
del(e[i].x),del(e[i].y),q.push(mp(a[i],i));
}
cout<<ns<<'\n';
return 0;
}