#include "bits/stdc++.h"
#include <cassert>
using namespace std;
using ll = long long;
using ull = unsigned long long;
using ld = long double;
using pi = pair<int, int>;
using pll = pair<ll, ll>;
using pd = pair<double, double>;
using pld = pair<ld, ld>;
int main()
{
ifstream cin("deque.in");
ofstream cout("deque.out");
int N, K;
cin >> N >> K;
deque<pi> nrs;
auto get_min = [&]() -> pi
{
return nrs.front();
};
auto add_elem = [&](const int val, const int idx) -> void
{
while (!nrs.empty() && val <= nrs.back().first)
{
nrs.pop_back();
}
nrs.emplace_back(val, idx);
};
auto del_elem = [&](const int iteration_idx) -> void
{
if (nrs.front().second == iteration_idx - K)
{
nrs.pop_front();
}
};
int cur_idx;
for (cur_idx = 0; cur_idx < K - 1; ++cur_idx)
{
int cur_nr;
cin >> cur_nr;
add_elem(cur_nr, cur_idx);
}
ll res{};
for (int cur_nr; cur_idx < N; ++cur_idx)
{
cin >> cur_nr;
/*cerr << "deque: ";
for (const auto &q : nrs)
{
printf("{%d, %d}, ", q.first, q.second);
}
cerr << endl;*/
add_elem(cur_nr, cur_idx);
del_elem(cur_idx);
res += get_min().first;
}
cout << res;
}