#include<bits/stdc++.h>
#define ll long long int
using namespace std;

ll dp[2000008];
ll a[2000008];

int main () {

	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

// #ifndef ONLINE_JUDGE
// 	freopen("input.txt", "r", stdin);
// 	freopen("output.txt", "w", stdout);
// 	freopen("error.txt" , "w" , stderr);
// #endif


	ll n, k;
	cin >> n >> k;

	for (ll i = 0; i < n; i++) {
		cin >> a[i];
	}


	priority_queue<pair<ll, ll>> pq;
	for (ll i = 0; i < k; i++) {
		dp[i] = a[i];
		pq.push({a[i], i});
	}

	ll size = ceil(n / (k * 1.0));
	for (ll i = 1; i < size; i++) {
		pair<ll, ll> p_max1 = pq.top();
		pq.pop();
		pair<ll, ll> p_max2 = pq.top();
		pq.pop();

		pq = priority_queue<pair<ll, ll>>();

		for (ll j = k * i; j < n && j < k * i + k; j++) {

			if (j - p_max1.second != k) {
				// use max_1
				dp[j] = a[j] + p_max1.first;
			} else {
				// use max_2
				dp[j]  = a[j] + p_max2.first;
			}

			pq.push({dp[j], j});
		}
	}

	ll max_sum = INT_MIN;
	for (ll i = 0; i < n; i++) {
		max_sum = max(max_sum, dp[i]);
	}

	cout << max(max_sum, 0ll) << "\n";

	return 0;
}