CSES - Kopiot
  • Time limit: 1.00 s
  • Memory limit: 128 MB

Tehtäväsi on toteuttaa tietorakenne, joka pitää yllä listaa, jonka jokainen alkio on taulukko. Aluksi listassa on vain yksi taulukko.

Rakenteen tulee tarjota seuraavat operaatiot:

  1. muuta taulukon xx alkion kk arvoksi uu
  2. laske taulukon xx välin [a,b][a,b] lukujen summa
  3. tee kopio taulukosta xx ja lisää se listan loppuun

Taulukoissa on nn lukua, ja ne on indeksoitu 1,2,,n1,2,\ldots,n. Listassa olevat taulukot on indeksoitu 1,2,1,2,\ldots

Syöte

Syötteen ensimmäisellä rivillä on kokonaisluku nn, taulukon koko.

Seuraavalla rivillä on nn lukua t1,t2,,tnt_1,t_2,\ldots,t_n, jotka kuvaavat taulukon alkusisällön.

Sitten syötteessä on luku qq, kyselyjen määrä.

Lopuksi syötteessä on qq riviä, joista jokainen kuvaa yhden kyselyn.

Jos kysely on tyyppiä 1, rivi on muotoa "1 xx kk uu". Tämä tarkoittaa, että taulukon xx alkion kk arvoksi tulee uu.

Jos kysely on tyyppiä 2, rivi on muotoa "2 xx aa bb". Tämä tarkoittaa, että täytyy laskea välin [a,b][a,b] summa taulukossa xx.

Jos kysely on tyyppiä 3, rivi on muotoa "3 xx". Tämä tarkoittaa, että taulukosta xx tehdään kopio listan loppuun.

Tuloste

Tulosta jokaisesta tyypin 2 kyselystä lukujen summa omalle rivilleen.

Rajat

  • 1n1051 \le n \le 10^5
  • 106ti106-10^6 \le t_i \le 10^6
  • 1q1051 \le q \le 10^5
  • 1kn1 \le k \le n
  • 106u106-10^6 \le u \le 10^6
  • 1abn1 \le a \le b \le n

Esimerkki

Syöte:

5
2 3 1 2 5
6
3 1
2 1 1 5
2 2 1 5
1 2 2 5
2 1 1 5
2 2 1 5

Tuloste:

13
13
13
15