Cerință
Se considera axa Ox. Putem face urmatoarele operatii:
- 1: Adaugam punctul x, la pozitia ba pe axa, cu ponderele c, unde a,b,c∈Z.
- 2: Consideram toate punctele intre b1a1 si b2a2 inclusiv, unde a1,b1,a2,b2∈Z. Sa se afle SAU-ul pe biti al lor.
Date de intrare
Pe prima linie a fișierului de intrare orqueries.in se găseste numarul natural Q, reprezentand numarul de operatii pe care le efectuam.
Pe urmatoarele Q linii se vor afla tuple de forma 1 a b c, sau 2 a1 b1 a2 b2, in functie de tipul operatiei efectuate.
Atentie! Initial, vom considera L=0. Pentru fiecare operatie, vom XOR-a a, b sau a1, b1, a2, b2 in functie de operatie cu L pentru a afla valoarea adevarata a variabilei. Ulterior, L va fi egal cu rezultatul ultimei operatii de tip 2.
Date de ieșire
Pentru fiecare operatie de tip 2, se va afisa rezultatul SAU-ului pe biti al punctelor intre b1a1 si b2a2 pe cate o linie in fisierul orqueries.out.
Restricții și precizări
- 1≤Q≤100 000
- 0≤ci<231
- 1≤a⊕L,b⊕L,a1⊕L,b1⊕L,a2⊕L,b2⊕L≤1 000 000 000, la orice moment, unde notam operatia XOR cu ⊕.
- Atentie! Pot exista mai multe puncte in aceeasi coordonata.
- Pentru teste in valoare de 30 de puncte, Q≤1000.
- Pentru alte teste in valoare de 15 puncte, b⊕La⊕L,b1⊕La1⊕L,b2⊕La2⊕L∈Z;1≤b⊕La⊕L,b1⊕La1⊕L,b2⊕La2⊕L≤100 000, b1⊕La1⊕L=b2⊕La2⊕L
- Pentru alte teste in valoare de 15 puncte, b⊕La⊕L,b1⊕La1⊕L,b2⊕La2⊕L∈Z;1≤b⊕La⊕L,b1⊕La1⊕L,b2⊕La2⊕L≤100 000
- Pentru alte teste in valoare de 20 de puncte, 0≤ci≤1.
- Pentru alte teste in valoare de 20 de puncte, nicio restrictie suplimentara.
Exemplul 1
orqueries.in
5
1 1 2 5
1 3 4 3
2 1 3 1 1
2 3 2 4 2
1 2 2 8
orqueries.out
7
3
Explicație
Initial, L=0.
Primele doua operatii insereaza punctele 2⊕L=21⊕L=1=0.5 cu ponderele 5 si 4⊕L=33⊕L=3=0.75 cu ponderele 3.
A treia operatie face query intre punctele 3⊕L=31⊕L=1=0.(3) si 1⊕L=11⊕L=1=1. Toate punctele sunt incluse, asadar rezultatul este 5∣3=7, unde notam operatia OR cu ∣.
Dupa a treia operatie, L=7.
A patra operatie face query intre punctele 2⊕L=53⊕L=4=0.8 si 2⊕L=54⊕L=3=0.6. Doar punctul 43=0.75 cu ponderele 3 este inclus, asadar rezultatul este 3.
Dupa a patra operatie, L=3.
A cincea operatie insereaza punctul 2⊕3=12⊕3=1=1 cu ponderele 8.
Exemplul 2
orqueries.in
4
1 5 2 1
1 2 5 2
2 1 2 4 5
2 2 5 5 2
orqueries.out
0
3
Explicație
Initial, L=0.
Primele doua operatii insereaza punctele 2⊕L=25⊕L=5=2.5 cu ponderele 1 si 5⊕L=52⊕L=2=0.4 cu ponderele 2.
A treia operatie face query intre punctele 2⊕L=21⊕L=1=0.5 si 5⊕L=54⊕L=4=0.8. Cum nu exista niciun punct intre aceste coordonate, rezultatul este 0.
Dupa a treia operatie, L=0.
A patra operatie face query intre punctele 5⊕L=52⊕L=2=0.4 si 2⊕L=25⊕L=5=2.5. Cum toate punctele sunt incluse, rezultatul este 1∣2=3.
Dupa a patra operatie, L=3.