Аліса і Боб люблять грати в карткові ігри, з колодою карт, пронумерованими послідовними неотрицательними цілими числами.
Хоча Аліса має дуже особливий спосіб переміщення колоди. Спочатку вона бере верхню карту з колоди і кладе її в нижню частину колоди. Потім вона виймає наступну карту і починає купу з нею. Потім вона знову пересуває верхню карту до нижньої та кладе нову верхню карту на купу. Вона повторює цей процес до тих пір, поки вона не випорожнить колоду, і в цей момент купою стає нова колода.
deck | pile
-----------+-----------
3 1 4 0 2 |
1 4 0 2 3 |
4 0 2 3 | 1
0 2 3 4 | 1
2 3 4 | 0 1
3 4 2 | 0 1
4 2 | 3 0 1
2 4 | 3 0 1
4 | 2 3 0 1
| 4 2 3 0 1
4 2 3 0 1 |
Малюнок 1: Аліса виконує перетасування на колоді 5 карт «3, 1, 4, 0, 2». На задній панелі карти все ліворуч.
Одного разу Боб оголошує, що бере тижневу відпустку. Аліса, не маючи з ким грати, зараховує свою подругу Єву. Тепер Єва - безсоромна шахрайка, тож, побачивши своєрідне переміщення Аліси, вона розуміє, що заздалегідь може укласти колоду на свою користь!
Коли Єва повертається додому після першого дня, вона робить деякий аналіз гри та з'ясовує, що найкращі шанси на неї, коли картки є в порядку 0, 1, 2, 3, 4, 5, ... Вона не зробила впіймайте, скільки карт було в колоді, тому вона вилуплює схему, що має зайву силу, щоб написати якийсь код на руці, який під час запуску набирає розмір колоди і відображає порядок, який Єві потрібно скласти картки, так що коли Аліса пересуває колоду, остаточна колода - в порядку 0, 1, 2, 3, ...
Насправді, Єві не важливо, на якій мові знаходиться код (вона їх усіх знає), чи код є функцією, що приймає цілий аргумент і повертає масив, або повною програмою, що приймає вхід через аргумент командного рядка або STDIN і запис результатів до STDOUT. Однак їй потрібен код якомога коротший, щоб мінімізувати шанси Аліси побачити її та зловити її.
Як аморально, ви можете, хлопці, допомогти Єві?
Приклади входів і виходів:
in out
1 0
2 0 1
5 2 4 0 3 1
10 2 9 4 8 0 7 3 6 1 5
52 6 51 25 50 12 49 24 48 1 47 23 46 11 45 22 44 5 43 21 42 10 41 20 40 2 39 19
38 9 37 18 36 4 35 17 34 8 33 16 32 0 31 15 30 7 29 14 28 3 27 13 26
shuffle(shuffle(range(5))) == range(5)
...