Problem: Given is a sequence of N digits a_1a_2\ldots a_N, where each element is 1, 2, or 3. Let x_{i,j} defined as follows:

* x_{1,j} := a_j \quad (1 \leq j \leq N)
* x_{i,j} := | x_{i-1,j} - x_{i-1,j+1} | \quad (2 \leq i \leq N and 1 \leq j \leq N+1-i)



Find x_{N,1}.

Constraints

* 2 \leq N \leq 10^6
* a_i = 1,2,3 (1 \leq i \leq N)

Input

Input is given from Standard Input in the following format:


N
a_1a_2\ldotsa_N


Output

Print x_{N,1}.

Examples

Input

4
1231


Output

1


Input

10
2311312312


Output

0

Solution (in CPP):

Solution:
#include "bits/stdc++.h"
#define rep(i,n) for(int i=0;i<n;i++)
using namespace std;

typedef long long ll;

int main() {
    int N;
    string a;
    cin >> N >> a;
    vector<int> b;
    rep(i, N - 1) {
        b.push_back(abs(a[i] - a[i + 1]));
    }
    if (N == 2) {
        cout << b[0] << '\n';
        return 0;
    }
    /*
    rep(i, N - 1) cout << b[i];
    cout << "\n";
    */
    bool f = true;
    rep(i, N - 1) if (b[i] == 1) f = false;
    int c = 1;
    if (f) {
        rep(i, N - 1) b[i] /= 2;
        c = 2;
    }
    int ans = 0;
    rep(i, N - 1) {
        ans += (N - 2 == (i | (N - 2 - i))) * b[i];
        ans %= 2;
    }
    cout << ans * c << "\n";
}