#include <iostream>
#include <vector>
#include <numeric>
#include <algorithm>
#include <cmath>
#include <set>
using namespace std;

#define all(x) x.begin(), x.end()
#define sz(x) static_cast<lng>(x.size())

using lng = long long;

void solve() {
	lng n, k; cin >> n >> k;
	vector<lng> a(n);
	vector<pair<lng, int>> values;
	for (int i = 0; i < n; i++) {
		lng x; cin >> x;
		a[i] = x;
		values.emplace_back(x, i);
	}
	sort(all(values), [&](pair<lng, int> a, pair<lng, int> b) {
		if (a.first + a.second != b.first + b.second) {
			return (a.first + a.second > b.first + b.second);
		}
		return (a.second < b.second);
	});
	vector<bool> used(n, false);
	lng ans = 0;
	for (int i = 0; i < k - 1; i++) {
		used[values[i].second] = true;
		ans += values[i].first + 1;
	}
	lng cnt = 0, best = 0;
	for (int i = 0; i < n; i++) {
		if (!used[i]) {
			cnt++;
			best = max(best, a[i] + cnt);
		}
	}
	ans += best;
	cout << ans << '\n';
}

int main() { 
	cin.tie(nullptr)->sync_with_stdio(false);
	int t = 1;
	//cin >> t;
	while (t--) {
		solve();
	}
	return 0;
}