## https://yukicoder.me/problems/no/2255 from collections import deque def main(): N, K = map(int, input().split()) n_min = N - 1 array1 = [i for i in range(2, N + 1)] array2 = [i for i in reversed(range(2, N + 1))] iter_array = [] i1 = 0 i2 = 0 for i in range(N - 1): if i % 4 <= 1: iter_array.append(array2[i2]) i2 += 1 else: iter_array.append(array1[i1]) i1 += 1 # n_maxを求めるためにやる queue = deque() queue.append(1) for n in iter_array: l = abs(n - queue[0]) r = abs(n - queue[-1]) if l >= r: queue.appendleft(n) else: queue.append(n) n = queue.popleft() ans = 0 while len(queue) > 0: d = queue.popleft() ans += abs(d - n) n = d n_max = ans if not (n_min <= K <= n_max): print(-1) return queue = deque() queue.append(1) used = [False] * (N + 1) used[1] = True for n in iter_array: l = abs(n - queue[0]) r = abs(n - queue[-1]) if l > r: if K >= l: queue.appendleft(n) used[n] = True K -= l else: # 左でダメなら is_ok = False if n > queue[0]: if not used[queue[0] + K]: used[queue[0] + K] = True queue.appendleft(queue[0] + K) is_ok = True else: if not used[queue[0] - K]: used[queue[0] - K] = True queue.appendleft(queue[0] - K) is_ok = True if not is_ok: if n > queue[-1]: used[queue[-1] + K] = True queue.append(queue[-1] + K) else: used[queue[-1] - K] = True queue.append(queue[-1] - K) K = 0 else: if K >= r: queue.append(n) used[n] = True K -= r else: is_ok = False if n > queue[-1]: if not used[queue[-1] + K]: used[queue[-1] + K] = True queue.append(queue[-1] + K) is_ok = True else: if not used[queue[-1] - K]: used[queue[-1] - K] = True queue.append(queue[-1] - K) is_ok = True if not is_ok: if n > queue[0]: used[queue[0] + K] = True queue.appendleft(queue[0] + K) else: used[queue[0] - K] = True queue.appendleft(queue[0] - K) K = 0 if K == 0: break answer = [] while queue[0] != 1: answer.append(queue.popleft()) answer.append(queue.popleft()) for i in range(1 , N + 1): if not used[i]: answer.append(i) while len(queue) > 0: answer.append(queue.popleft()) print(" ".join(map(str, answer))) if __name__ == "__main__": main()