Sir Nataflet

Time limit: 5s Memory limit: 256MB Input: sir-nataflet.in Output: sir-nataflet.out

Cerință

Se dă un șir de numere întregi a1,a2,,ana_1, a_2, \dots, a_n de lungime nn și un număr xx, de asemenea se garantează că fiecare element aia_i este impar.

Asupra acestui șir se vor efecta două tipuri de operații:

  1. ll, rr, valval - adaugă valval la toate elemente al,,ara_l, \dots, a_r unde valval este par;
  2. ll, rr, kk - găsește produsul numerelor al,,ara_l, \dots, a_r modulo 2k2^{k}.

Date de intrare

Pe prima linie se găsesc două numere întregi, nn și qq reprezentând lungimea șirului și numărul de operații.
Cea dea doua linie conține șirul de numere a1,a2,,ana_1, a_2, \dots, a_n.
Următoarele qq linii corespund operațiilor, fiecare având una dintre cele 2 forme:

  • 1 l r val reprezentând operațiile de primul tip;
  • 2 l r k reprezentând operațiile de al doilea tip.

Date de ieșire

Pentru fiecare operație de tipul 2 afișati o linie cu răspunsul acesteia.

Restricții și precizări

  • 1n,q200 0001 \leq n, q \leq 200 \ 000;
  • 1ai,val2201 \leq a_i, val \leq 2^{20};
  • k20k \leq 20

Exemplu

stdin

10 10
969575 741825 24903 1047319 450475 256145 1045323 479255 810659 768323
1 5 6 3034
2 1 10 4
2 1 9 8
2 1 4 20
1 3 6 126904
2 5 5 15
2 9 9 3
1 7 7 853094
1 4 9 1025178
2 5 8 2

stdout

5
119
558151
23357
3
1

Log in or sign up to be able to send submissions!