D. Сортировка слиянием
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Сортировка слиянием — один из самых известных алгоритмов сортировки. Основная функция этого алгоритма, сортирующая промежуток массива a с индексами из [l, r), может быть реализована следующим образом:

  1. Если промежуток [l, r) уже отсортирован в неубывающем порядке (то есть, для каждого i, такого, что l ≤ i < r - 1, a[i] ≤ a[i + 1]), завершить вызов функции;
  2. Присвоить ;
  3. Вызвать mergesort(a, l, mid);
  4. Вызвать mergesort(a, mid, r);
  5. Слить промежутки [l, mid) и [mid, r) воедино, после чего промежуток [l, r) будет отсортирован в неубывающем порядке. Функция слияния не вызывает никаких других функций.

В этой задаче массив 0-индексирован, и для сортировки всего массива нужно вызвать mergesort(a, 0, n).

Количество вызовов функции mergesort очень важно, поэтому Иван решил вычислять его во время сортировки. К примеру, если a = {1, 2, 3, 4}, то будет сделан 1 вызов mergesortmergesort(0, 4), который проверит, что массив отсортирован, и завершится. Если a = {2, 1, 3}, то количество вызовов равно 3: сначала вызывается mergesort(0, 3), в котором присваивается mid = 1 и вызывается calls mergesort(0, 1) и mergesort(1, 3), не проводящие никаких рекурсивных вызовов, так как подотрезки (0, 1) и (1, 3) уже отсортированы.

Иван написал программу, которая считает число вызовов функции mergesort, но сейчас ему нужно протестировать её. Для этого необходимо найти массив a, такой, что a — перестановка первых n чисел (то есть размер a равен n, и каждое целое число из [1, n] встречается в массиве ровно один раз), и число вызовов mergesort при сортировке этого массива равно k.

Помогите Ивану найти нужный массив!

Входные данные

В единственной строке записаны два числа n и k (1 ≤ n ≤ 100000, 1 ≤ k ≤ 200000) — размер перестановки, которая нужна Ивану, и количество вызовов mergesort, необходимое для её сортировки.

Выходные данные

Если перестановка размера n, такая, что при её сортировке будет совершено ровно k вызовов mergesort, не существует, выведите  - 1. Иначе выведите n целых чисел a[0], a[1], ..., a[n - 1] — элементы перестановки. Если решений несколько, выведите любое.

Примеры
Входные данные
3 3
Выходные данные
2 1 3 
Входные данные
4 1
Выходные данные
1 2 3 4 
Входные данные
5 6
Выходные данные
-1