- Time limit: 2.50 s
- Memory limit: 2048 MB
Taulukko 0 sisältää luvut 1, 2, \ldots, n tässä järjestyksessä. Saat syötteenä q päivitystä siten, että i. päivitystä kuvaavat luvut k_i, t_i, a_i ja b_i. Päivityksellä i taulukosta i - 1 tehdään taulukko i seuraavasti:
- Lue taulukon i - 1 kohdasta k_i luku x.
- Lue taulukon t_i\oplus x kohdista a_i\oplus x ja b_i\oplus x luvut c ja d.
- Kopioi taulukko i-1 taulukoksi i ja käännä taulukosta i väli c..d ympäri.
Tässä \oplus on biteittäinen XOR-operaattori. Voit olettaa, että 1\leq k_i\leq n, 0\leq t_i\oplus x < i, 1\leq a_i\oplus x\leq b_i\oplus x\leq n ja c\leq d. Tehtäväsi on selvittää taulukon q sisältö.
Syöte
Syötteen ensimmäisellä rivillä on luvut n ja q, taulukon koko ja päivitysten lukumäärä. Seuraavat q riviä sisältävät päivitykset siten, että i. päivityksen rivillä on luvut k_i, t_i, a_i ja b_i.
Tuloste
Tulosta yksi rivi, joka sisältää taulukon q luvut välein eroteltuina.
Rajat
- 1\leq n\leq 10^5
- 1\leq q\leq 10^5
Esimerkki
Syöte:
8 10 8 8 10 15 3 6 1 14 3 7 1 5 5 6 2 14 8 7 6 2 8 3 6 0 5 2 0 11 4 6 2 7 7 4 14 0 3 13 9 14
Tuloste:
4 3 8 7 5 2 6 1