CSES - Summat II
  • Time limit: 2.50 s
  • Memory limit: 512 MB

Taulukossa on nn lukua, jotka on indeksoitu 0,1,,n10,1,\ldots,n-1, ja ovat kaikki aluksi nollia. Lisäksi ylläpidetään lukua 0Dn10\leq D\leq n - 1, joka on myös aluksi 0. Toteuta tietorakenne, joka tarjoaa seuraavat operaatiot:

  1. kasvata jokaista välillä [(a+D)modn,(b+D)modn][(a+D)\bmod n,(b+D)\bmod n] olevaa lukua xx:llä
  2. laske välin [(a+D)modn,(b+D)modn][(a+D)\bmod n,(b+D)\bmod n] lukujen summa modulo nn, ja tee siitä uusi luku DD

Mikäli x>yx>y, väli [x,y][x, y] tarkoittaa tässä samaa kuin [y,x][y, x]. xmodyx\bmod y on jakojäännös, kun luku xx jaetaan luvulla yy.

Syöte

Syötteen ensimmäisellä rivillä on luvut nn ja qq, taulukon koko ja kyselyjen määrä. Tämän jälkeen syötteessä on qq riviä, joista jokainen kuvaa yhden kyselyn.

Jos kysely on tyyppiä 1, rivi on muotoa "1 aa bb xx". Tämä tarkoittaa, että välin [(a+D)modn,(b+D)modn][(a+D)\bmod n,(b+D)\bmod n] lukuja tulee kasvattaa xx:llä.

Jos kysely on tyyppiä 2, rivi on muotoa "2 aa bb". Tämä tarkoittaa, että tulee laskea välin [(a+D)modn,(b+D)modn][(a+D)\bmod n,(b+D)\bmod n] lukujen summa modulo nn, tulostaa se, ja tallentaa se uudeksi luvuksi DD.

Tuloste

Tulosta jokaisesta tyypin 2 kyselystä lukujen summa modulo nn omalle rivilleen.

Rajat

  • 1n1091 \le n \le 10^{9}
  • 1q31051 \le q \le 3\cdot 10^5
  • 0an10 \le a \le n-1
  • 0bn10 \le b \le n-1
  • 0xn10 \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,3,3,3,0,0)(0, 0, \underline{3, 3, 3}, 0, 0), D=0D = 0
Taulukko (0,0,3,3,3,0,0)(0, 0, 3, \underline{3, 3, 0, 0}), D=6D = 6
Taulukko (0,0,3,5,5,2,2)(0, 0, 3, \underline{5, 5, 2, 2}), D=6D = 6
Taulukko (0,0,3,5,5,2,2)(0, \underline{0, 3, 5}, 5, 2, 2), D=1D = 1