# Enter your code here. Read input from STDIN. Print output to STDOUT import sys LINES = sys.stdin.readlines() n,k = map(int, LINES[0].split()) c = map(int, LINES[1].split()) def gauss(A): n = len(A) for i in range(0, n): # Search for maximum in this column maxEl = abs(A[i][i]) maxRow = i for k in range(i+1, n): if abs(A[k][i]) > maxEl: maxEl = abs(A[k][i]) maxRow = k # Swap maximum row with current row (column by column) for k in range(i, n+1): tmp = A[maxRow][k] A[maxRow][k] = A[i][k] A[i][k] = tmp # Make all rows below this one 0 in current column for k in range(i+1, n): c = -A[k][i]/A[i][i] for j in range(i, n+1): if i == j: A[k][j] = 0 else: A[k][j] += c * A[i][j] # Solve equation Ax=b for an upper triangular matrix A return A # x = [0 for i in range(n)] # for i in range(n-1, -1, -1): # x[i] = A[i][n]/A[i][i] # for k in range(i-1, -1, -1): # A[k][n] -= A[k][i] * x[i] # return x A = [] for i in xrange(n): z = [] for j in xrange(n): if abs(i-j) <= k: z.append(1) else: z.append(0) z.append(1) A.append(z) #for i in xrange(n): # for j in xrange(n+1): # print A[i][j], " ", # print "" A = gauss(A) #print "Gauss" #for i in xrange(n): # for j in xrange(n+1): # print A[i][j], " ", # print "" n = len(A) #A[n-1][n-1] = 1 x = [0 for i in range(n)] for i in range(n-1, -1, -1): x[i] = A[i][n]/A[i][i] for k in range(i-1, -1, -1): A[k][n] -= A[k][i] * x[i] sc = 0 for i in xrange(n): if x[i] > 0: sc += c[i] print sc