CF BUDDY
← Problems·

1535D · Playoff Tournament

1800 · data structures, dfs and similar, dp

Problem: 2k2^k teams participate in a playoff tournament. The tournament consists of 2k12^k - 1 games. They are held as follows: first of all, the teams are split into pairs: team 11 plays against team 22, team 33 plays against team 44 (exactly in this order), and so on (so, 2k12^{k-1} games are played in that phase). When a team loses a game, it is eliminated, and each game results in elimination of one team (there are no ties). After that, only 2k12^{k-1} teams remain. If only one team remains, it is declared the champion; otherwise, 2k22^{k-2} games are played: in the first one of them, the winner of the game "11 vs 22" plays against the winner of the game "33 vs 44", then the winner of the game "55 vs 66" plays against the winner of the game "77 vs 88", and so on. This process repeats until only one team remains.

For example, this picture describes the chronological order of games with k=3k = 3:

Let the string ss consisting of 2k12^k - 1 characters describe the results of the games in chronological order as follows:

  • if sis_i is 0, then the team with lower index wins the ii-th game;
  • if sis_i is 1, then the team with greater index wins the ii-th game;
  • if sis_i is ?, then the result of the ii-th game is unknown (any team could win this game).

Let f(s)f(s) be the number of possible winners of the tournament described by the string ss. A team ii is a possible winner of the tournament if it is possible to replace every ? with either 1 or 0 in such a way that team ii is the champion.

You are given the initial state of the string ss. You have to process qq queries of the following form:

  • pp cc — replace sps_p with character cc, and print f(s)f(s) as the result of the query.

Input Format: The first line contains one integer kk (1k181 \le k \le 18).

The second line contains a string consisting of 2k12^k - 1 characters — the initial state of the string ss. Each character is either ?, 0, or 1.

The third line contains one integer qq (1q21051 \le q \le 2 \cdot 10^5) — the number of queries.

Then qq lines follow, the ii-th line contains an integer pp and a character cc (1p2k11 \le p \le 2^k - 1; cc is either ?, 0, or 1), describing the ii-th query.

Output Format: For each query, print one integer — f(s)f(s).

Sample Cases

Case 1

Input

3
0110?11
6
5 1
6 ?
7 ?
1 ?
5 ?
1 1

Output

1
2
3
3
5
4

Similar problems

00:00:00
Loading editor…
Welcome! I'm your coding tutor for this problem. Use the chips below to reveal stored hints or get AI feedback on your code. I'll guide you step by step — never giving away the solution.

Sign in to unlock AI tutor feedback