Zadanie

Gooooooool

Počet bodov: 50

Meky Žbirka žiaľ neuspel v získaní novej krásnej tváre, ale našťastie má ešte zopár nedokonalostí v rukáve (doslova), na ktoré sa vie sústrediť. Keďže v Šamoríne sa oteplieva a začína tielková sezóna, obzvlášť ťažko znáša svoje krivé ruky. Z chýb sa síce treba poučiť, ale nikto nepovedal, že hneď na prvý šup. A presne preto Vám predstavujeme skvelý nový turnaj Mekyho Žbirku vo vajcohode!

Turnaja sa zúčastnilo \(2^n\) tímov a odohrali klasického pavúka kým nezostal 1 víťaz. Meky nemá čas strácať čas, a tak priebeh turnaja nechal v rukách svojich neschopných pomocníkov. Problém však je, že títo boli naozaj neschopní a zápis z turnaja neobsahoval kompletné informácie.

Avšak aj z nekompletného zápisu, vieme zistiť, koľko tímov mohlo potenciálne turnaj vyhrať. Meky by si teda mohol aspoň jednoducho spočítať, koľko má potenciálnych víťazných tímov. V tom však jeho neschopní pomocníci začali zmätkovať a meniť niektoré zápisy (Mekyho sklamaný výraz ich vystrašil. No pravdu povediac, hocijaký Mekyho výraz je od incidentu v Patinciach strašidelný.).

Meky si pre istotu povedal, že treba vypočítať počet potenciálnych víťazných tímov po každej zmene. Samozrejme, nebude to robiť on sám a jeho neschopní pomocníci už narobili škody dosť. Chcelo by to pre zmenu nejakých šikovných pomocníkov. Skúste sa mu ponúknuť, dá vam za to body do Zenitu.

Úloha

\(2^n\) tímov odohralo \(2^n - 1\) hier. Na začiatku boli tímy rozdelené do párov. V prvej hre proti sebe hrali tím 1 a tím 2. V druhej hre proti sebe hrali tím 3 a tím 4. A tak ďalej. Keď všetky dvojice odohrali svoje zápasy, v ďalšom kole proti sebe hrali víťazi prvej hry proti víťazom druhej hry. Potom hrali víťazi tretej hry proti víťazom štvrtej hry. Tento princíp sa opakuje, až pokým neskončíme s jediným víťazným tímom.

Výsledky turnaja sú chronologicky reprezentované reťazcom \(s\) dĺžky \(2^n - 1\) nasledujúcim spôsobom:

Tím mohol turnaj potenciálne vyhrať, ak v reťazci \(s\) vieme nahradiť každý \(?\) buď \(0\) alebo \(1\) tak, aby daný tím turnaj vyhral.

Následuje \(q\) zmien, každá v jednom riadku vo formáte jedného celého čísla \(p\) a jedného znaku \(c\) oddelených medzerou. V rámci zmeny sa \(s_p\) zmení na znak \(c\). Po každej zmene je vašou úlohou vypísať celé číslo reprezentujúce počet potenciálnych možných víťazných tímov turnaja reprezentovaného reťazcom \(s\).

Vstup a Výstup

V prvom riadku vstupu sa nachádza celé čislo \(n\). V prvej sade platí \(1 \leq n \leq 10\), v druhej sade platí \(1 \leq n \leq 18\).

V druhom riadku sa nachádza reťazec \(s\) dĺžky \(2^n - 1\) pozostávajúci zo znakov \(0\), \(1\), \(?\), reprezentujúci pôvodný stav výsledkov turnaja.

V treťom riadku sa nachádza celé číslo \(q\) - počet zmien. V prvej sade platí \(1 \leq q \leq 1000\), v druhej sade platí \(1 \leq q \leq 100000\).

Nasledujúcich \(q\) riadkov každý obsahuje číslo \(p\) a znak \(c\) (\(1 \leq p \leq 2^n - 1\), \(c\) môže byť \(0\), \(1\) alebo \(?\)).

Pre každú zmenu v reťazci vypíšte celé číslo - počet možných víťazov turnaja reprezentovaného momentálnym reťazcom \(s\).

Príklad

Input:

3
0?01011
5
4 ?
4 0
1 1
1 1
4 ?

Output:

2
1
1
1
2
Pre odovzdávanie sa musíš prihlásiť.