Laiko ribojimas: 1s

Atminties ribojimas: 1024MB

Duomenų failas: xor_operations.in

Rezultatų failas: xor_operations.out

Jei norite pateikti savo sprendimą - prisijunkite.

XOR Operacijos

Jūs turite masyvą a, sudarytą iš n sveikųjų skaičių a_1,a_2,...,a_n. Šiam masyvui jūs galite atlikti dvi operacijas:

  1. Apskaičiuoti dabartinę masyvo intervalo [l,r] sumą.
  2. Kiekvienam masyvo elementui, patenkančiam į intervalą [l,r] atlikti operaciją a_i=a_i\\oplusx (XOR operaciją).

Jūs turite sąrašą m operacijų. Jūsų užduotis - atlikti visas operacijas ir kiekvienai sumos operacijai išspausdinti jos rezultatą.

Pradiniai duomenys

Pirmoje eilutėje pateiktas vienas sveikasis skaičius n(1\\leqn\\leq100000) - masyvo dydis.

Antroje eilutėje pateikta n sveikųjų skaičių a_1,a_2,...,a_n(0\\leqa_i\\leq1000000) - pradinis skaičių masyvas.

Trečioje eilutėje pateiktas skaičius m(1\\leqm\\leq100000) - operacijų kiekis.

Kiekvienoje likusioje m eilučių pateikta po skaičių t_i(1\\leqt_i\\leq2) - operacijos tipas. Jei t_i=1, tada taip pat pateikiami sveikieji skaičiai l_i,r_i(1\\leql_i\\leqr_i\\leqn). Jei t_i=2, tuomet pateikiami sveikieji skaičiai l_i,r_i,x_i(1\\leql_i\\leqr_i\\leqn,1\\leqx_i\\leq1000000).

Rezultatai

Kiekvienai pirmo (1) tipo užklausai atskirose eilutėse reikia išspausdinti sumos operacijos rezultatą.

Pavyzdžiai

Pradiniai duomenys Rezultatai
5
4 10 3 13 7
8
1 2 4
2 1 3 3
1 2 4
1 3 3
2 2 5 5
1 1 5
2 1 2 10
1 2 3
26
22
0
34
11