Given are integers N and X. For each integer k between 0 and X (inclusive), find the answer to the following question, then compute the sum of all those answers, modulo 998244353.

* Let us repeat the following operation on the integer k. Operation: if the integer is currently odd, subtract 1 from it and divide it by 2; otherwise, divide it by 2 and add 2^{N-1} to it. How many operations need to be performed until k returns to its original value? (The answer is considered to be 0 if k never returns to its original value.)

Constraints

* 1 \leq N \leq 2\times 10^5
* 0 \leq X < 2^N
* X is given in binary and has exactly N digits. (In case X has less than N digits, it is given with leading zeroes.)
* All values in input are integers.

Input

Input is given from Standard Input in the following format:


N
X


Output

Print the sum of the answers to the questions for the integers between 0 and X (inclusive), modulo 998244353.

Examples

Input

3
111


Output

40


Input

6
110101


Output

616


Input

30
001110011011011101010111011100


Output

549320998
#include <bits/stdc++.h>
using namespace std;
using LL = int64_t;
using Uint = uint32_t;
constexpr int INF = 1e9;
constexpr LL INFLL = 1e18;
constexpr int MOD = 998244353;
constexpr int MAX_N = 200000;
int n;
string x;
int cnt[MAX_N + 1];
void solve() {
    cin >> n >> x;
    for (int times = 1; times <= n; ++times)
        if (n % times == 0 && times % 2 == 1) {
            int len = n / times;
            string s = x.substr(0, len);
            for (char c : s)
                cnt[times] = (2 * cnt[times] + c - '0') % MOD;
            string invs = s;
            for (char &c : invs)
                c ^= 1;
            string t;
            for (int i = 0; i < times; ++i)
                if (~i & 1)
                    t += s;
                else
                    t += invs;
            if (t <= x)
                cnt[times] = (cnt[times] + 1) % MOD;
        }
    int ans = 0;
    for (int i = n; i >= 1; --i)
        if (n % i == 0 && i % 2 == 1) {
            for (int j = 3 * i; j <= n; j += 2 * i)
                if (n % j == 0)
                    cnt[i] = (cnt[i] - cnt[j] + MOD) % MOD;
            ans = (ans + 1ll * cnt[i] * n / i) % MOD;
        }
    cout << 2 * ans % MOD << "\n";
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int T = 1;
    // cin >> T;
    for (int i = 1; i <= T; ++i)
        solve();
    return 0;
}