import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); // 城市数量
int k = sc.nextInt(); // 跃迁半径
// 读取相邻城市间的耗时(共n-1个)
long[] a = new long[n - 1];
for (int i = 0; i < n - 1; i++) {
a[i] = sc.nextLong();
}
// 前缀和数组:s[0] = 0,s[1] = a[0](1→2的耗时),s[2] = a[0]+a[1](1→3的耗时)...
// s[x] 表示从1号城市到x+1号城市的总耗时
long[] prefixSum = new long[n];
for (int i = 1; i < n; i++) {
prefixSum[i] = prefixSum[i - 1] + a[i - 1];
}
long maxSave = 0; // 最大节省时间
// 遍历每个城市i(1~n),计算右跳的最大节省量
for (int i = 1; i <= n; i++) {
int jumpTarget = Math.min(n, i + k); // 右跳目标城市(不超过n)
if (jumpTarget > i) { // 只有跳得更远才会节省时间
// 节省的时间 = 从i到jumpTarget的正常耗时(前缀和差值)
long currentSave = prefixSum[jumpTarget - 1] - prefixSum[i - 1];
if (currentSave > maxSave) {
maxSave = currentSave;
}
}
}
// 最小总耗时 = 正常总耗时 - 最大节省时间
long minTotalTime = prefixSum[n - 1] - maxSave;
System.out.println(minTotalTime);
sc.close();
}
}