#include<bits/stdc++.h>
#define ll long long
#define FOR(i,a,b) for(ll i=a;i<=b;i++)
#define ROF(i,a,b) for(ll i=a;i>=b;i--)
#define sc(a) scanf("%lld",&a)
#define ps(a) printf("%lld ",a)
#define pn(a) printf("%lld\n",a)
using namespace std;
const ll N=3e6+7;
ll a[N],n,c[N],cnt,sum=999999999999999,vis[N];
ll bu[N],f[N],len,m;
queue<ll> q;
bool can[N];
inline ll bfs(ll now){
while(q.size()) q.pop();
q.push(now);
ll sum=0;
while(q.size()){
ll tmp=q.front();
sum+=vis[tmp];
q.pop();
if((can[bu[tmp]+1]||can[(bu[tmp]+1)%m])){
ll kk=tmp+1;
if(!can[bu[tmp]+1]) kk=(tmp+1)%m;
if(f[kk]!=-1){
sum+=f[kk];
return sum;
}
q.push(kk);
}
}
return sum;
}
int main(){
memset(f,-1,sizeof(f));
sc(n),sc(m);
ll summ=0;
FOR(i,1,n) sc(a[i]),c[++cnt]=a[i],summ+=a[i];
sort(c+1,c+cnt+1);
ll len=unique(c+1,c+cnt+1)-c-1;
FOR(i,1,len){
bu[i]=c[i];
can[c[i]]=true;
}
FOR(i,1,n){
a[i]=lower_bound(c+1,c+len+1,a[i])-c;
vis[a[i]]+=bu[a[i]];
}
FOR(i,1,n){
if(f[a[i]]!=-1) continue;
f[a[i]]=bfs(a[i]);
}
ll anss=99999999999999;
FOR(i,1,n){
anss=min(anss,summ-f[a[i]]);
}
pn(anss);
return 0;
}
WA+TLE+AC 求帮