- Time limit: 2.50 s
- Memory limit: 512 MB
Taulukossa on n lukua, jotka on indeksoitu 0,1,\ldots,n-1, ja ovat kaikki aluksi nollia. Lisäksi ylläpidetään lukua 0\leq D\leq n - 1, joka on myös aluksi 0. Toteuta tietorakenne, joka tarjoaa seuraavat operaatiot:
- kasvata jokaista välillä [(a+D)\bmod n,(b+D)\bmod n] olevaa lukua x:llä
- laske välin [(a+D)\bmod n,(b+D)\bmod n] lukujen summa modulo n, ja tee siitä uusi luku D
Mikäli x>y, väli [x, y] tarkoittaa tässä samaa kuin [y, x]. x\bmod y on jakojäännös, kun luku x jaetaan luvulla y.
Syöte
Syötteen ensimmäisellä rivillä on luvut n ja q, taulukon koko ja kyselyjen määrä. Tämän jälkeen syötteessä on q riviä, joista jokainen kuvaa yhden kyselyn.
Jos kysely on tyyppiä 1, rivi on muotoa "1 a b x". Tämä tarkoittaa, että välin [(a+D)\bmod n,(b+D)\bmod n] lukuja tulee kasvattaa x:llä.
Jos kysely on tyyppiä 2, rivi on muotoa "2 a b". Tämä tarkoittaa, että tulee laskea välin [(a+D)\bmod n,(b+D)\bmod n] lukujen summa modulo n, tulostaa se, ja tallentaa se uudeksi luvuksi D.
Tuloste
Tulosta jokaisesta tyypin 2 kyselystä lukujen summa modulo n omalle rivilleen.
Rajat
- 1 \le n \le 10^{9}
- 1 \le q \le 3\cdot 10^5
- 0 \le a \le n-1
- 0 \le b \le n-1
- 0 \le x \le n-1
Esimerkki
Syöte:
7 4 1 2 4 3 2 3 6 1 0 4 2 2 4 2
Tuloste:
6 1
Tilanne ja muutettu/kyselty väli kyselyiden jälkeen:
Taulukko (0, 0, \underline{3, 3, 3}, 0, 0), D = 0
Taulukko (0, 0, 3, \underline{3, 3, 0, 0}), D = 6
Taulukko (0, 0, 3, \underline{5, 5, 2, 2}), D = 6
Taulukko (0, \underline{0, 3, 5}, 5, 2, 2), D = 1