Se dau două numere naturale N și Q.
Se va genera un șir de numere A0,A1,…,A2N−1 după următorii pași:
- Inițial, Ai=i, pentru fiecare 0≤i<2N.
- Apoi, pentru fiecare K de la 1 la N, se împarte șirul în subsecvențe disjuncte de lungime 2K, iar fiecare dintre aceste subsecvențe va fi oglindită.
De exemplu, pentru N=4, șirul A va fi generat în felul următor:
- Inițial, A=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15].
- După K=1: A=[1,0,3,2,5,4,7,6,9,8,11,10,13,12,15,14].
- După K=2: A=[2,3,0,1,6,7,4,5,10,11,8,9,14,15,12,13].
- După K=3: A=[5,4,7,6,1,0,3,2,13,12,15,14,9,8,11,10].
- După K=4: A=[10,11,8,9,14,15,12,13,2,3,0,1,6,7,4,5].
Cerință
Va trebui să răspundeți la Q interogări de următorul fel:
- L R: Care este valoarea sumei AL+AL+1+…+AR?
Date de intrare
Pe prima linie se vor afla două numere N și Q, cu semnificațiile din enunț,
Pe fiecare dintre următoarele Q linii se vor afla câte două numere Li și Ri, capetele celor Q interogări.
Date de ieșire
Pentru fiecare interogare (Li,Ri), afișați valoarea sumei AL+AL+1+…+AR.
Restricții și precizări
- 1≤N≤30;
- 1≤Q≤200 000
- 0≤Li≤Ri<2N, pentru fiecare 1≤i≤Q
| # |
Punctaj |
Restricții |
| 1 |
10 |
N≤10,Q≤1 000 |
| 2 |
11 |
N≤20 |
| 3 |
13 |
Pentru toate interogările, Ri−Li+1≤10 |
| 4 |
19 |
Pentru toate interogările, Ri−Li+1≤500 |
| 5 |
22 |
Pentru toate interogările, Li=0 |
| 6 |
16 |
1≤Q≤20 000 |
| 7 |
9 |
Fără restricții suplimentare. |
Exemplu
stdin
4 7
0 15
0 7
8 15
3 13
14 14
6 7
6 9
stdout
120
92
28
82
4
25
30
Explicație
Pentru prima interogare, A0+A1+…+A15=215⋅16=120.
Pentru a doua interogare, A0+A1+…+A7=8+9+…+15=92.
Pentru a treia interogare, A8+A9+…+A15=0+1+…+7=28.
Pentru a patra interogare, A3+A4+…+A13=9+14+15+12+13+2+3+0+1+6+7=82.