CSES - Treap VII
  • Time limit: 5.00 s
  • Memory limit: 256 MB

Tehtävänäsi on ylläpitää n luvun taulukkoa. Aluksi taulukko on täynnä nollia. Taulukkoon tehdään seuraavanlaisia kyselyjä:

  • H: laske taulukon yhtenäisen välin polynomihajautusarvo
  • R: käännä taulukon yhtenäinen väli ympäri
  • A: lisää taulukon yhtenäisellä välillä kaikkiin lukuihin annettu arvo

Lukujonon (a_0, a_1, a_2, \ldots, a_{n-1}) polynomihajautusarvo on a_0 + a_1 x + a_2 x^2 + a_3 x^3 + \ldots + a_{n-1} x^{n-1} modulo 2^{64}, missä x = 123456789.

Syöte

Syötteen ensimmäisellä rivillä on luvut n ja q, taulukon koko ja kyselyiden lukumäärä. Seuraavat q riviä sisältävät kyselyt. Jokaisella kyselyrivillä on ensin merkki, joka kertoo kyselyn tyypin: S, R tai A. Rivin loppu riippuu kyselytyypistä:

  • H: luvut a ja b, välin alku- ja loppukohdat (1\leq a\leq b\leq n)
  • R: luvut a ja b, välin alku- ja loppukohdat (1\leq a\leq b\leq n)
  • A: luvut a ja b ja d, välin alku- ja loppukohdat, sekä välin jokaiseen alkioon lisättävä luku, (1\leq a\leq b\leq n)

Tuloste

Tulosta jokaista H-kyselyä kohti välin polynomihajautusarvo 2^{64} omalle rivilleen.

Rajat

  • 1\leq n\leq 5\cdot 10^5
  • 1\leq q\leq 5\cdot 10^5
  • 1\leq d\leq 10^{12}

Esimerkki

Syöte:

8 24
R 7 8
R 2 3
A 1 3 66
H 1 5
A 2 4 43
R 1 4
R 5 6
H 3 8
R 4 8
A 1 7 8
H 6 6
R 1 3
A 4 8 91
H 3 7
H 2 3
R 4 8
R 4 8
H 4 4
H 7 8
A 1 6 74
H 1 6
A 6 6 88
A 5 6 13
H 2 4

Tuloste:

1005944205660722526
8148148183
8
1731100457623044023
6296296356
99
19382715972
12342422904188490918
2636793139215058949