Käytössä on $2n$ korttia, joihin on kirjoitettu luvut $1$:stä $2n$:ään ja jotka ovat pinossa järjestyksessä $1, 2, 3, \ldots, 2n$ ylhäältä alas.
Näitä kortteja järjestetään uudelleen käyttämällä seuraavia menetelmiä useita kertoja:
Leikkaus kokonaisluvulla $k$
Jaetaan pakka ylhäältä lukien $k$ kortin pinoon A ja loppujen $2n-k$ kortin pinoon B, minkä jälkeen pino B nostetaan pinon A päälle.
Lomitussekoitus (Riffle shuffle)
Jaetaan pakka ylhäältä lukien $n$ kortin pinoon A ja loppujen $n$ kortin pinoon B, ja yhdistetään ne $1$ pinoksi siten, että ylhäältä lukien kortit ovat järjestyksessä: A:n $1$. kortti, B:n $1$. kortti, A:n $2$. kortti, B:n $2$. kortti, $\ldots$, A:n $n$-s kortti, B:n $n$-s kortti.
Kirjoita ohjelma, joka järjestää kortit uudelleen syötteen ohjeiden mukaisesti ja tulostaa korttien numerot uudelleenjärjestelyn jälkeen järjestyksessä ylhäältä alas.
Syöte
- Rivillä $1$ on luku $n$ ($1 \le n \le 100$). Korttien lukumäärä on siis $2n$.
- Rivillä $2$ on operaatioiden lukumäärä $m$ ($1 \le m \le 1000$).
- Riveillä $3$–$m + 2$ olevilla $m$ rivillä on kullakin $1$ kokonaisluku $k$ väliltä $0$–$2n-1$, joka määrittää korttien uudelleenjärjestelytavan järjestyksessä:
- Jos $k = 0$, tehdään lomitussekoitus.
- Jos $1 \le k \le 2n-1$, tehdään leikkaus luvulla $k$.
Tuloste
Tulosteen tulee koostua $2n$ rivistä. Tulosta riville $1$ päällimmäisen kortin numero järjestelyn päätyttyä, riville $2$ ylhäältä lukien $2$. kortin numero järjestelyn päätyttyä, ja niin edelleen, eli riville $i$ ylhäältä lukien $i$-nnen kortin numero.
Esimerkit
Syöte 1
2 2 1 0
Tuloste 1
2 4 3 1
Syöte 2
3 4 2 4 0 0
Tuloste 2
1 5 4 3 2 6