#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
#define int long long int
#define pii pair<int,int>
#define all(v) v.B,v.E
#define vi vector<int>
#define vii vector<pair<int,int>>
#define mod2 998244353
#define mod 1000000007
int dp[300000][2];
int ind[300000];
int32_t main()
{
    ll t = 1;
    // cin>>t;
    while(t--)
    {
        int n = 1;
        int k;
        cin>>k;
        while(k--) n*=2;
        string s;
        cin>>s;
        // int n;
        k  = n;
        int i = 0;
        int temp = n/2;
        while(k--)
        {
            dp[k][0] = dp[k][1] = 0;
            if(i%2==0)
            {
                ind[i++] = temp;
                temp--;
            }
            else ind[i++] = temp;
        }
        vector<vector<int>> v(n);
        
        for(int i = 0; i<n-1; i++)
        {
            // cout<<i<<endl;
            int k = 1;
            if(i>=n/2)
            {
                if(s[i]=='?') k = dp[i][0]+dp[i][1];
                else  k = dp[i][s[i]-'0'];
                dp[i+ind[i]][(i)%2] =  k ;
            }
            else
            {
                dp[i][0] = dp[i][1] =1 ;
                
                if(s[i]=='?') k = dp[i][0]+dp[i][1];
                else  k = dp[i][s[i]-'0'];
                dp[i+ind[i]][(i)%2] =  k ;
            } 
        }
        n -= 1;
        int q;
        cin>>q;
        int ans;
    
        // cout<<"hh"<<dp[6][0]<<endl;
        for(int i = 0; i< q; i++)
        {
            int d; char c;
            cin>>d>>c;
            ll k = d-1;
            int t = 0;
            if(c=='?' && s[k]!='?') t = dp[k][1-(s[k]-'0')];
            else if(c!='?' && s[k]=='?') t = -dp[k][1-(c-'0')];
            else if(c-'0'== 1-(s[k]-'0')) t = dp[k][c-'0']-dp[k][s[k]-'0'];
            // cout<<"t = "<<t<<endl;
            // dp[k] 
            s[d-1] = c;
            while(k!=n-1)
            {
                dp[k+ind[k]][k%2] += t;
                if(s[k+ind[k]]!='?'&& (k%2!= (s[k+ind[k]]-'0')))
                {
                    // cout<<"sdfjk"<<endl;
                    // t = 0;
                     break;

                }
                k += ind[k];
            }
            if(s[n-1]=='?') ans = dp[n-1][0]+dp[n-1][1];
            else ans = dp[n-1][s[n-1]-'0'];
            // cout<<dp[n-1][0]<<endl;
            cout<<ans<<endl;
        }
    }
}