มีไพ่ $2n$ ใบที่เขียนหมายเลขตั้งแต่ $1$ ถึง $2n$ กองซ้อนกันอยู่โดยเรียงตามลำดับ $1, 2, 3, \ldots, 2n$ จากบนลงล่าง
เราจะเรียงลำดับไพ่เหล่านี้ใหม่โดยใช้วิธีต่อไปนี้หลายๆ ครั้ง:
การตัดไพ่ด้วยจำนวนเต็ม $k$
แบ่งไพ่ออกเป็นกอง A ซึ่งประกอบด้วยไพ่ $k$ ใบบนสุด และกอง B ซึ่งประกอบด้วยไพ่ที่เหลืออีก $2n-k$ ใบ จากนั้นวางกอง B ลงบนกอง A
การสับไพ่แบบกรีด (Riffle shuffle)
แบ่งไพ่ออกเป็นกอง A ซึ่งประกอบด้วยไพ่ $n$ ใบบนสุด และกอง B ซึ่งประกอบด้วยไพ่ที่เหลืออีก $n$ ใบ แล้วนำมารวมเป็น $1$ กอง โดยเรียงจากบนลงล่างเป็น ใบที่ $1$ ของ A, ใบที่ $1$ ของ B, ใบที่ $2$ ของ A, ใบที่ $2$ ของ B, $\ldots$, ใบที่ $n$ ของ A, ใบที่ $n$ ของ B
จงเขียนโปรแกรมเพื่อเรียงลำดับไพ่ตามคำสั่งในข้อมูลนำเข้า แล้วแสดงหมายเลขของไพ่หลังจากเรียงลำดับเสร็จแล้วตามลำดับจากบนลงล่าง
ข้อมูลนำเข้า
- บรรทัดที่ $1$ มีจำนวน $n$ ($1 \le n \le 100$) กล่าวคือจำนวนไพ่ทั้งหมดคือ $2n$ ใบ
- บรรทัดที่ $2$ มีจำนวนครั้งของการดำเนินการ $m$ ($1 \le m \le 1000$)
- ใน $m$ บรรทัด ตั้งแต่บรรทัดที่ $3$ ถึงบรรทัดที่ $m + 2$ แต่ละบรรทัดจะมีจำนวนเต็ม $k$ เพียง $1$ จำนวนซึ่งมีค่าตั้งแต่ $0$ ถึง $2n-1$ เพื่อระบุวิธีการเรียงลำดับไพ่ตามลำดับ:
- กรณี $k = 0$ ให้ทำการสับไพ่แบบกรีด
- กรณี $1 \le k \le 2n-1$ ให้ทำการตัดไพ่ด้วยค่า $k$
ข้อมูลส่งออก
ข้อมูลส่งออกประกอบด้วย $2n$ บรรทัด โดยบรรทัดที่ $1$ ให้แสดงหมายเลขของไพ่ใบบนสุดหลังจากเรียงลำดับเสร็จสิ้น บรรทัดที่ $2$ ให้แสดงหมายเลขของไพ่ใบที่ $2$ จากด้านบนหลังจากเรียงลำดับเสร็จสิ้น เช่นนี้ไปเรื่อยๆ กล่าวคือในบรรทัดที่ $i$ ให้แสดงหมายเลขของไพ่ใบที่ $i$ จากด้านบน
ตัวอย่าง
ข้อมูลนำเข้า 1
2 2 1 0
ข้อมูลส่งออก 1
2 4 3 1
ข้อมูลนำเข้า 2
3 4 2 4 0 0
ข้อมูลส่งออก 2
1 5 4 3 2 6