#include <bits/stdc++.h>

using namespace std;
#define ll long long
#define ld long double
#define F first
#define S second
mt19937 rnd(100);

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

    ll n, k, ans = 0;
    cin >> n >> k;
    vector<ll> arr(n);
    for (ll &i: arr)
        cin >> i;

    ll sum = arr[k - 1];
    map<ll, ll> taken;
    for (int i = 0; i + 1 < k; ++i) {
        sum += arr[i];
        taken[arr[i]]++;
    }

    ans = max(ans, sum);
    for (int i = k; i < n; ++i) {
        sum -= arr[i - 1];
        sum += arr[i];
        if (k > 1 && arr[i - 1] > taken.begin()->first) {
            sum -= taken.begin()->first;
            taken[taken.begin()->first]--;
            if (!taken.begin()->second)
                taken.erase(taken.begin());

            sum += arr[i - 1];
            taken[arr[i - 1]]++;
        }

        ans = max(ans, sum + (i - k + 1));
    }

    cout << ans + k;
    return 0;
}

/*
5 3
3 7 10 1 2

2 + 3 + 4 + 5 + 6

*/
/*
Выберем К элементов.
Эти элементы мы возьмем.
Есть самый правый их них.
В его множество мы запихаем все что не взяли левее него. Каждое число увеличит ответ на 1.
Переберем самое правое взятое.
Левые максимальны.


*/
/*


*/
/*


*/
/*


*/