#include <bits/stdc++.h>
using namespace std;
#define FORE(i, a, b) for(int i = (a); i <= (b); ++i)
#define FORD(i, a, b) for(int i = (a); i >= (b); --i)
#define FOR(i, a, b) for(int i = (a); i < (b); ++i)
#define FORIT(i,v) for(__typeof((v).begin()) i = (v).begin(); i != (v).end(); ++i)
#define fi first
#define se second
#define ll long long
#define mp make_pair
#define pb push_back
#define all(a) a.begin(),a.end()
#define sqr(x) (x)*(x)
#define endl '\n'

template <typename G> inline void read(G &x)
{
    x = 0; char c;
    while(!isdigit(c = getchar()));
    do{x = x*10 + c - '0';} while(isdigit(c = getchar()));
}

template <typename G> inline void write(G x)
{
    if (x > 9) write(x/10);
    putchar(x%10 + '0');
}

template <class T> inline T min(T a,T b,T c){ return min(a,min(b,c)); }
template <class T> inline T min(T a,T b,T c,T d) { return min(a,min(b,c,d)); }
template <class T> inline T max(T a,T b,T c){ return max(a,max(b,c)); }
template <class T> inline T max(T a,T b,T c,T d) { return max(a,max(b,c,d)); }



const int MAXN = 1e5 * 5;
const int base = 1e9 + 7;
const int N = 50000;


int n , k;
int a[N] , f[N];
int ans;

int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0);
    cin>> n >> k;
    FORE(i,1,n) cin>> a[i];
    FORE(i,1,n) f[i] = -base;
    FORE(i,1,n) {
        FORD(j,i-1,0)
        if (i - j > k) break;
        else {
            f[i] = max(f[i] , f[j] + a[i]);
        }
        ans = max(ans , f[i]);
    }
    cout<< ans <<endl;
    return 0;
}
