Cerința
RAU-Gigel este pasionat de grafică, așa că se gândește la un joc cu imagini. El creează într-un editor grafic o imagine bitmap binară de dimensiuni N X N pixeli. O imagine bitmap binară este o matrice de pixeli, fiecare pixel fiind un bit. Să considerăm că valoarea 0 (nesetat) înseamnă alb și valoarea 1 (setat) înseamnă negru (în realitate este exact invers!). Apoi RAU-Gigel împarte imaginea în patru imagini pătrate egale de latură N / 2 pe care le notează de la 1 la 4 (1 este imaginea din colțul dreapta-sus, 2 este cea din colțul dreapta-jos, 3 stânga-jos și 4 stânga-sus). El repetă procedeul pentru fiecare dintre cele 4 imagini obținute, și tot așa, reducând mereu latura la jumătate și notând direcțiile de la 1 la 4, până când ajunge la imagini de mărimea unui pixel.
Pentru simplitate, să presupunem că N este o putere a lui 2, să spunem K. Deci, după K împărțiri succesive de imagini, orice pixel poate fi identificat printr-un șir unic format din cifrele 1, 2, 3 și 4, de lungime K.
De exemplu, dacă N = 4, atunci K = 2. Imaginea inițială are 16 pixeli. Vom avea 2 împărțiri succesive:
După prima împărțire rezultă 4 imagini reduse la jumătate (fiecare are câte 4 pixeli):
4 \(\quad\) 1
3 \(\quad\) 2
După a doua împărțire rezultă 16 imagini de câte 1 pixel:
44 41 \(\quad\) 14 11
43 42 \(\quad\) 13 12
34 31 \(\quad\) 24 21
33 32 \(\quad\) 23 22
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 x, descris ca mai sus. Dacă pixelul x nu este setat, îl setează. Dacă pixelul x este deja setat, atunci îl resetează.
Operaţia 2 x , unde x are aceeași semnificație ca mai sus, este o interogare: dacă x este setat, se răspunde cu 0. Dacă x nu este setat, se cere determinarea dimensiunii celei mai mari imagini complet albe, dintre cele create de RAU-Gigel, care conține pixelul x. Dimensiunea este dată de numărul de pixeli conținut.
Dându-se N cu semnificația de mai sus și M, reprezentând numărul de operaţii şi cele M 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 N și M separate cu un spațiu. Pe următoarele M linii se află câte o cifră de 1 sau 2 și câte un string, de forma tip_operaţie x, reprezentând tipul operaţiei şi șirul x.
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
2 ≤ N ≤ 2.000.000.000,1 ≤ M ≤ 10.000- In toate testele,
Neste o putere a lui2 - Toate șirurile
xsunt corect definite - Pentru teste în valoare de
30de puncte,N <= 1.000șiM <= 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ă:
0 0 \(\quad\) 0 0
0 0 \(\quad\) 0 0
0 0 \(\quad\) 0 0
0 0 \(\quad\) 0 0
După primele 2 operații de tip 1, imaginea va conține:
0 0 \(\quad\) 0 1
0 0 \(\quad\) 0 0
0 0 \(\quad\) 0 0
0 0 \(\quad\) 0 1
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 0. Cea mai mare imagine albă, creată de RAU-Gigel, care conține b, este colțul stânga jos cu 4 pixeli. La fel pentru c. În cazul pixelului d, răspunsul este 1 (chiar el).
c 0 \(\quad\) 0 e
0 0 \(\quad\) 0 0
0 0 \(\quad\) d 0
b 0 \(\quad\) 0 a
Urmează o operație de tip 1 care resetează pixelul notat cu a (șirul 22). Următoarele 2 interogări pentru a și d generează răspunsurile 4, respectiv 4.
În final, se resetează și pixelul e, iar ultima interogare, pentru c, va determina răspunsul 16, 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