CSES - Taulukot
  • Time limit: 0.50 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 arvoa
  2. laske taulukon xx välin lukujen summa
  3. tee kopio taulukosta xx ja lisää se listan loppuun
  4. kopioi taulukon xx väli taulukkoon yy

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.

Jos kysely on tyyppiä 4, rivi on muotoa "4 xx yy aa bb". Tämä tarkoittaa, että taulukosta xx kopioidaan väli [a,b][a, b] taulukon yy vastaaviin kohtiin.

Tuloste

Ohjelmasi tulee tulostaa 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
  • 1u1091 \le u \le 10^9
  • 1abn1 \le a \le b \le n

Esimerkki

Syöte:

5
2 3 1 2 5
8
3 1
2 1 1 5
2 2 1 5
1 2 2 7
1 1 3 6
4 2 1 2 4
2 1 1 5
2 2 1 5

Tuloste:

13
13
17
17