#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

const int maxn = 5e5 + 1;

int a[maxn];
int tree[maxn << 2];

void build(int v, int tl, int tr) {
   if (tl == tr) {
      tree[v] = tl;
      return;
   }
   int tm = (tl + tr) >> 1;
   build(v << 1, tl, tm);
   build(v << 1 | 1, tm + 1, tr);
}

int main() {
   ios_base::sync_with_stdio(0);
   cin.tie(0);

   int n, k;
   cin >> n >> k;
   
   ll ans = 0;
   for (int i = 0; i < n; i++) {
      cin >> a[i];
      ans += a[i] + 1;
   }

   vector<int> p(n);
   iota(p.begin(), p.end(), 0);
   sort(p.begin(), p.end(), [&](int x, int y) {
         return a[x] < a[y];
         });

   int mx = 0;

   multiset<int> st;
   for (int i = 0; i < n - k + 1; i++) {
      st.insert(a[p[i]]);
      ans -= a[p[i]] + 1;
   }
   vector<int> pref(n + 1);
   for (int i = 1; i <= n; i++) {
      pref[i] = pref[i - 1] + st.count(a[i - 1]);
      if (st.count(a[i - 1])) {

      st.erase(st.find(a[i - 1]));
      }
   }
   for (int i = 0; i < n - k + 1; i++) {
      st.insert(a[p[i]]);
   }
   for (int i = 1, cur_pos = 0; i <= n; i++) {
      if (st.count(a[i - 1])) {
         mx = max(mx, a[i - 1] + min(pref[i - 1] + 1, n - k + 1));
      }
   }
   cout << ans + mx << '\n';

   return 0;
}
