อลิซและบ็อบชอบเล่นเกมไพ่โดยมีจำนวนการ์ดเป็นจำนวนเต็มจำนวนต่อเนื่องกัน
อลิซมีวิธีในการสับสำรับโดยเฉพาะอย่างยิ่ง อันดับแรกเธอหยิบไพ่ใบบนสุดจากเด็คและวางไว้ที่ด้านล่างของเด็ค จากนั้นเธอก็เอาไพ่ใบต่อไปออกและเริ่มกองกับมัน จากนั้นเธอวนรอบการ์ดใบบนสุดลงไปด้านล่างและวางการ์ดใบใหม่ลงบนกอง เธอทำขั้นตอนนี้ซ้ำจนกระทั่งเธอเทสำรับตรงจุดที่กองเป็นเด็คใหม่
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, ... เธอไม่ได้ จับได้ว่ามีการ์ดอยู่ในสำรับจำนวนเท่าใดดังนั้นเธอจึงวางโครงร่าง harebrained ในการเขียนโค้ดลงบนแขนของเธอว่าเมื่อวิ่งจะใช้ขนาดของเด็คและแสดงลำดับที่อีฟจำเป็นต้องใส่การ์ดเข้าไป อลิซสับดาดฟ้าดาดฟ้าสุดท้ายอยู่ในลำดับ 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)
...