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;

long t[444444];
int main() {
	const int p = 998244353;
	int n;
	string x;
	cin >> n >> x;
	int y = 0;
	for (int i = 1; i <= n + n; i++) {
		if (i % 2 == 0)
			y = (y * 2 + x[i / 2 - 1] - '0') % p;
		if (n * 2 % i || n % i == 0)
			continue;
		int b = 1;
		for (int j = 0; j < n; j++) {
			int z = x[j % (i / 2)] ^ j / (i / 2) & 1;
			if (x[j] != z) {
				b = x[j] > z;
				break;
			}
		}
		t[i] = (y + b) % p;
	}
	for (int i = 1; i <= n + n; i++) {
		if (n * 2 % i || n % i == 0)
			continue;
		for (int j = i * 3; j <= n + n; j += i + i)
			if (n * 2 % j == 0)
				(t[j] += p - t[i]) %= p;
	}
	long r = 0;
	for (int i = 1; i <= n + n; i++) {
		if (n * 2 % i || n % i == 0)
			continue;
		(r += t[i] * i) %= p;
	}
	cout << r << endl;
	return 0;
}
