#include using namespace std; #define REP(i, a, b) for (int i = a; i <= b; i++) #define FOR(i, n) for (int i = 0; i < n; i++) #define foreach(it, ar) for ( typeof(ar.begin()) it = ar.begin(); it != ar.end(); it++ ) #define fill(ar, val) memset(ar, val, sizeof(ar)) #define PI 3.1415926535897932385 #define uint64 unsigned long long #define Int long long #define int64 long long #define all(ar) ar.begin(), ar.end() #define pb push_back #define ff first #define ss second #define bit(n) (1<<(n)) #define Last(i) ( (i) & (-i) ) #define sq(x) ((x) * (x)) #define INF INT_MAX #define mp make_pair #define MAXN 1001 #define LOGMAXN 19 int A[ MAXN ] ; int n, k ; int dp[ MAXN ][ MAXN ]; int rec( int l , int r ) { int cost = INT_MAX ; if( r < 0 ) return 0 ; if( l >= n ) return 0 ; if( r < l ) return 0 ; if( l < 0 ) return 0 ; if( r >= n ) return 0; //cout << l << " " << r <> n ; if( dp[l][r] != -1 )return dp[l][r] ; for( int i = l ; i <= r ; i ++ ) cost = min( cost , A[i] + rec( l , i - k - 1 ) + rec( i + k + 1 , r ) ) ; dp[ l ][ r ] = cost ; return cost ; } int main ( ) { cin >> n >> k ; FOR( i , n )cin >> A[i] ; FOR( i , MAXN) FOR( j , MAXN ) dp[i][j] = -1 ; cout<< rec( 0 , n-1 ) << endl ; ; }