#include <bits/stdc++.h>
using namespace std;
using ll=long long;
using vi=vector<int>;

int main() {
    int N; cin>>N;
    ll M = 10000000000;
    string T; cin>>T;
    if(T=="1"){
        cout<<2*M<<endl;
        return 0;
    }else if(T=="11"){
        cout<<M<<endl;
        return 0;
    }

    int cnt = 0;
    int cur = 0;
    if(T[0]=='0'){
        cnt++;
        cur = 1;
    }else if(N>=2 && T.substr(0,2)=="10"){
        cnt++;
        cur = 2;
    }else if(N>=3 && T.substr(0,3)=="110"){
        ;
    }else{
        cout<<0<<endl;
        return 0;
    }

    for (; cur+2 < N; cur+=3){
        if(T.substr(cur,3)=="110")cnt++;
        else{
            cout<<0<<endl;
            return 0;
        }
    }

    if(cur<N){
        if(T.substr(cur)=="1" || T.substr(cur)=="11")cnt++;
        else{
            cout<<0<<endl;
            return 0;
        }
    }

    ll ans = M - cnt + 1;
    cout<<ans<<endl;
    
}
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int N;
    cin >> N;
    string T;
    cin >> T;
    string S;
    while(S.length() < T.length()) {
        S += "110";
    }

    ll ans = 0;
    for(size_t i=0; i+T.size() <= S.size(); i++) {
        bool ok = true;
        for(size_t j=0; j < T.size(); j++) {
            if(S[i+j] != T[j]) ok = false;
            // cout << i+j << ' ' << j << ' ' << S[i+j] << ' ' << T[j] << '\n';
        }
        if(ok) ans++;
    }
    if(ans == 0) {
        S += "110";
        for(size_t i=0; i+T.size() <= S.size(); i++) {
            bool ok = true;
            for(size_t j=0; j < T.size(); j++) {
                if(S[i+j] != T[j]) ok = false;
                // cout << i+j << ' ' << j << ' ' << S[i+j] << ' ' << T[j] << '\n';
            }
            if(ok) ans++;
        }
    }
    // cout << ans << '\n';
    ans *= 10000000000LL - S.size() / 3 + 1;
    // ans *= 5 - S.size() / 3 + 1;
    cout << ans << endl;

    return 0;
}
