#include<iostream>
#include<cstdio>
#include<stack>
#include<queue>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<set>
#include<iomanip>
using namespace std;
#define N 300009
#define LL long long
#define INF 0x3f3f3f3f
#define mymin(x,y) (x>=y?y:x)
#define mymax(x,y) (x>=y?x:y)
int tong[N];
int main() {
	std::ios::sync_with_stdio(0); std::cin.tie(0);
    int n, k; cin >> n >> k;
    for(int i = 1; i <= n; i++){
        int a; cin >> a;
        tong[a]++;
    }
    int num = INF, res;
    LL ans = 0;
    for(int i = 0; i < n; i++){
        num = min(num, tong[i]);
        res = max(k - num, 0);
        //cout << i << " " << num << " " << res << "\n";
        k -= res;
        ans += (i * res);
        if(k == 0) break;
    }
    cout << ans << endl;
	return 0;
}

#include<bits/stdc++.h>
using namespace std;
#define ff                first
#define brn                "\n"
#define ss                second
#define mk                make_pair
#define int               long long
#define pb                push_back
#define ps(x,y)           fixed<<setprecision(y)<<x
#define w(x)              int x; cin>>x; while(x--)
#define FOR(i,a,b)        for(int i=(a);i<(b);i++)
#define ROF(i,a,b)        for(int i=(a);i>=(b);i--)
#define so(a,n)           sort(a,a+n)
#define rso(a,n)          sort(a,a+n),reverse(a,a+n)
#define all(v)            (v).begin(),(v).end()
#define ps(x,y)           fixed<<setprecision(y)<<x
#define sz                size();
#define p_sieve           10000007
const int                 maxn = 1e3 + 5;
const int                 modulo = 1000000007;
#define mod               1000000009;
const double              pi = 3.14159;
#define INF               1000001000
#define imx                9999999999999999
#define imi               -9999999999999999
//check n==1 and base cases//

//********************************---------always check array boundness-----------****************
// factorial ncr
// int printNcR(int n, int r)
// {
//     if(n<r)return 0;
//     long long p = 1, k = 1;
//     if (n - r < r)
//         r = n - r;
//     if (r != 0) {
//         while (r) {
//             p *= n;
//             k *= r;
//             long long m = __gcd(p, k);
//             p /= m;
//             k /= m;

//             n--;
//             r--;
//         }
//     }
//     else p = 1;
//     return p;
// }

// int power(int x, unsigned int y)
// {
//     int res = 1;
//     x = x % modulo;
//     if (x == 0) return 0;
//     while (y > 0)
//     {
//         if (y & 1) res = (res*x);
//         y = y>>1;
//         x = (x*x);
//     }
//     return res;
// }
const int N=300005;
vector<int>v[N];
void solve()
{
  int n,m;cin>>n>>m;
  int a[n];
  FOR(i,0,n)cin>>a[i];
  int maxi=1;
  sort(a,a+n);
  int cn=0,i=0;
  while(a[i]==0 and i<n)v[maxi].pb(0),i++,maxi++;
  cn++;
  FOR(j,i,n)
  {
  	int k=j;
  	int tt=1;
  	while(a[k]==cn and k<n)
  	{
  		if(v[tt].size()>0)if(v[tt].back()==cn-1 and tt<maxi)v[tt].pb(cn),tt++;	
  		k++;
	}
	j=k;
	j--;
	cn++;
  }
  int ans=0;
  for(int i=1;i<=m;i++)
  {
  	if(v[i].size()>0)ans+=(v[i].back()+1);
  }
  cout<<ans;
  	
}
int32_t main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	//prime_sieve();
	//w(t)
	solve();
}