Pixeli

Time limit: 0.04s Memory limit: 8MB Input: pixeli.in Output: pixeli.out

RAU-Gigel este pasionat de grafică, așa că se gândește să vă facă un cadou de 1 Iunie: un joc cu imagini. El creează într-un editor grafic o imagine bitmap binară de dimensiuni N×NN \times N pixeli. O imagine bitmap binară este o matrice de pixeli, fiecare pixel fiind un bit. Să considerăm că valoarea 00 (nesetat) înseamnă alb și valoarea 11 (setat) înseamnă negru. Apoi RAU-Gigel împarte imaginea în patru imagini pătrate egale de latură N/2N / 2 pe care le notează de la 11 la 44 (11 este imaginea din colțul dreapta-sus, 22 este cea din colțul dreapta-jos, 33 stânga-jos și 44 stânga-sus). El repetă procedeul pentru fiecare dintre cele 44 imagini obținute, și tot așa, reducând mereu latura la jumătate și notând direcțiile de la 11 la 44, până când ajunge la imagini de mărimea unui pixel.

Pentru simplitate, să presupunem că NN este o putere a lui 22, să spunem KK. Deci, după KK împărțiri succesive de imagini, orice pixel poate fi identificat printr-un șir unic format din cifrele 11, 22, 33 și 44, de lungime KK.

De exemplu, dacă N=4N = 4, atunci K=2K = 2. Vom avea 22 împărțiri succesive:

Inițial, imaginea este complet albă.

Acum începe jocul. RAU-Gigel se gândește la 2 tipuri de operaţii:

  • Operaţia 1 x schimbă starea pixelul identificat cu șirul xx, descris ca mai sus. Dacă pixelul xx nu este setat, îl setează. Dacă pixelul xx este deja setat, atunci îl resetează;
  • Operaţia 2 x, unde xx are aceeași semnificație ca mai sus, este o interogare: dacă xx este setat, se răspunde cu 00. Dacă xx nu este setat, se cere determinarea dimensiunii celei mai mari imagini complet albe, dintre cele create de RAU-Gigel, care conține pixelul xx. Dimensiunea este dată de numărul de pixeli conținut.

Cerință

Dându-se NN cu semnificația de mai sus și MM, reprezentând numărul de operaţii şi cele MM operaţii de tipul 1 și 2, să se răspundă la operaţiile de tip 2.

Date de intrare

Fișierul de intrare pixeli.in conține pe prima linie numerele naturale NN și MM separate cu un spațiu. Pe următoarele MM linii se află câte o cifră de 11 sau 22 și câte un string, de forma tip_operaţie x, reprezentând tipul operaţiei şi șirul xx.

Date de ieșire

Fișierul de ieșire pixeli.out va conține răspunsurile pentru operaţiile de tip 2, câte unul pe linie.

Restricții și precizări

  • 2N2 000 000 0002 \le N \le 2\ 000\ 000\ 000
  • 1M10 0001 \le M \le 10\ 000
  • În toate testele, NN este o putere a lui 22.
  • Toate șirurile xx sunt corect definite.
  • Pentru teste în valoare de 30 de puncte, N1 000N \le 1\ 000 și M50M \le 50.

Exemplul 1

pixeli.in

4 11
1 11
1 22
2 22
2 33
2 44
2 24
1 22
2 22
2 24
1 11
2 44

pixeli.out

0
4
4
1
4
4
16

Explicație

Inițial imaginea este albă:

După primele 2 operații de tip 1, imaginea va conține:

Următoarele 4 interogări vor referi, în ordine, pixelii marcati cu a, b, c, d (imaginea de mai jos). Cum a era setat, răspunsul este 00. Cea mai mare imagine albă, creată de RAU-Gigel, care conține b, este colțul stânga-jos cu 44 pixeli (bolduit). La fel pentru c. În cazul pixelului d, răspunsul este 11 (chiar el).

Urmează o operație de tip 1 care resetează pixelul notat cu a (șirul 2222). Următoarele 2 interogări pentru a și d generează răspunsurile 44, respectiv 44.

În final, se resetează și pixelul e, iar ultima interogare, pentru c, va determina răspunsul 1616, toată imaginea fiind acum complet albă.

Exemplul 2

pixeli.in

8 9
1 111
1 222
2 222
2 333
2 444
2 242
1 222
2 222
2 242

pixeli.out

0
16
16
4
16
16

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