Shuffle
Time limit1sMemory limit256 MB
Apply a recursive shuffle to a deck of 2^n cards t times and print the final card order.
- Level
Medium7 of 10
- Topics
- Divide and conquer, Bit manipulation, Recursion, Implementation
- Solved
- No attempts yet
Problem
Byteasar has learnt a fabulous recursive method of shuffling a deck of cards. This algorithm can be described as follows:
- In order to shuffle two cards, swap them.
- In order to shuffle cards (), split them into two equal parts, an upper one and a lower one (so that each of them has cards). Shuffle each of them recursively and then put the lower half on the top of the upper half.
Byteasar has a deck of cards. Each of them has a number written on it. Byteasar now shuffles the deck, running the procedure described above exactly times. As it might take a great amount of time, he would like to know the final order of the cards beforehand.
Input
The first line of the input contains two integers (, ). The second line contains integers (); is the number written on the -th topmost card in the deck.
Output
In the first and only line of output print integers, the numbers written on the cards of Byteasar's deck after shuffles. Print the numbers in the order from the topmost to the bottommost card.