Недалекие перестановки

Input file:  NEAR.IN     
Output file: NEAR.OUT    Time limit: 0.2 sec.

Перестановкой длины N называется упорядоченный массив чисел от 1 до N, в котором каждое число встречается ровно один раз. Например, массив (2, 5, 3, 1, 4) является перестановкой длины 5, а массивы (1, 3, 5, 4) и (2, 3, 5, 1, 2, 4) перестановками не являются. 
Назовем перестановку недалекой, если каждое число K (1<=K<=N) в ней стоит либо на K-ом месте, либо на (K-1)-ом месте, либо на (K+1)-ом месте; кроме того, число 1 может стоять на N-ом месте, а число N - на первом.
Расставим все недалекие перестановки заданной длины N  в лексикографическом (словарном) порядке. Например, для N=5 получим 13 недалеких перестановок, расположенных в следующем порядке: 
(1,2,3,4,5), (1,2,3,5,4), (1,2,4,3,5), (1,3,2,4,5), (1,3,2,5,4), (2,1,3,4,5), (2,1,3,5,4), (2,1,4,3,5), (2,3,4,5,1), (5,1,2,3,4), (5,2,3,4,1), (5,2,4,3,1), (5,3,2,4,1).
Задача состоит в том, чтобы определить, какая перестановка стоит на     P-ом месте в ряду недалеких перестановок длины N.

Входные данные. Первая строка входного файла содержит натуральное число N (1<=N<=100); вторая строка входного файла содержит натуральное число P (1<=P<=2000000000). Гарантируется, что величина P не превосходит количества недалеких перестановок длины N. 

Выходные данные.  Выходной файл должен содержать в своей единственной строке искомую перестановку - N чисел от 1 до N. Каждые два соседних числа в этой строке должны быть разделены ровно одним пробелом.
 
Пример		NEAR.IN 			NEAR.OUT
5				1 3 2 4 5
4