#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m;
int h[1000005];
int dp[1000005],q[1000005];
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%d",&h[i]);
}
int l=0,r=0;
for(int i=1;i<=n;i++)
{
while(l<r&&i-q[l]>m)
{
l++;
}
dp[i]=dp[q[l]]+h[i];
while(l<r&&h[q[r]]>h[i])
{
r--;
}
q[++r]=i;
}
int sum=1<<30;
for(int i=n;i>=n-m+1;i--)
{
sum=min(sum,dp[i]);
}
printf("%d",sum);
return 0;
}
#include<cstring>
#include<algorithm>
using namespace std;
int n,m;
int h[1000005];
int dp[1000005],q[1000005];
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%d",&h[i]);
}
int l=0,r=0;
for(int i=1;i<=n;i++)
{
while(l<r&&i-q[l]>m)
{
l++;
}
dp[i]=dp[q[l]]+h[i];
while(l<r&&h[q[r]]>h[i])
{
r--;
}
q[++r]=i;
}
int sum=1<<30;
for(int i=n;i>=n-m+1;i--)
{
sum=min(sum,dp[i]);
}
printf("%d",sum);
return 0;
}