// #define _GLIBCXX_DEBUG
#include <bits/stdc++.h>

using namespace std;

mt19937 rnd(69); // chrono::steady_clock::now().time_since_epoch().count()
#define all(x) x.begin(), x.end()
#define int long long
#define ull unsigned long long
#define ld long double
#pragma GCC optimize("O3,unroll-loops")
// #pragma GCC target("avx2")

const long long INF = 1e15 + 69;

signed main()
{
    ios_base::sync_with_stdio(false);
    int n, k, ans, cur_free;
    cin >> n >> k;
    vector<int> a(n);
    ans = 0;
    cur_free = 0;
    multiset<pair<int, int>> cur_min;
    for (int i = 0; i < n; i++) {
        cin >> a[i];
        if (cur_min.size() < k) {
            cur_min.insert({a[i], 1});
            ans += a[i] + 1;
        } else {
            if ((*(cur_min.begin())).first <= a[i] + cur_free + 1) {
                ans -= (*cur_min.begin()).first + (*cur_min.begin()).second;
                cur_free += (*cur_min.begin()).second;
                ans += a[i] + cur_free + 1;
                cur_min.insert({a[i], cur_free + 1});
                cur_free = 0;
                cur_min.erase(cur_min.begin());
            } else {
                cur_free++;
            }
        }
    }
    cout << ans;
    return 0;
}
