N, M = map(int, input().split()) A = map(int, input().split()) def sign(x): return -1 if (x & 1) else 1 dp = [[-10 ** 18] * (M + 1) for _ in range(N + 1)] partition_flag = [[False] * (M + 1) for _ in range(N + 1)] for j in range(M + 1): dp[0][j] = 0 for i, a in enumerate(A): for j in range(M + 1): dp[i + 1][j] = dp[i][j] + sign(j) * a for j in range(1, M + 1): if dp[i + 1][j] < dp[i][j - 1] + sign(j) * a: partition_flag[i + 1][j] = True dp[i + 1][j] = dp[i][j - 1] + sign(j) * a # 復元 max_index = dp[N].index(max(dp[N])) ans = [] j = max_index for i in range(N, 0, -1): if partition_flag[i][j]: ans.append(i - 1) j -= 1 assert j >= 0 ans.reverse() ans.extend([N] * (M - len(ans))) print(*ans, sep="\n")