#include <bits/stdc++.h>
#define int long long
const int mu=998244353,N=200005;
int f[N],s[N],b[N];
char t[N],c[N];
int n,k,ans;
void count(int x){
	for (int i=1;i<=x;i++)
		f[x]=(f[x]*2ll+s[i])%mu;
	f[x]++;
	for (int i=1;i<=n/x;i++){
		if (i&1){
			for (int j=(i-1)*x+1;j<=i*x;j++) b[j]=s[(j-1)%x+1];	
		}
		else for (int j=(i-1)*x+1;j<=i*x;j++) b[j]=s[(j-1)%x+1]^1;
	}
	for (int i=1;i<=n;i++){
		if (b[i]<s[i]) break;
		if (b[i]>s[i]){
			f[x]--;
			break;
		}
	}
	f[x]=(f[x]+mu)%mu; 
	for (int i=1;i<x;i++)
		if (x%i==0) f[x]=(f[x]-f[i]+mu)%mu;	
}
signed main(){
	scanf("%lld",&n);
	scanf("%s",t+1);
	for (int i=1;i<=n;i++) s[i]=t[i]-'0';
	for (int i=1;i<=n;i++)
		if (n%i==0 && (n/i)&1) 
			count(i);
	for (int i=1;i<=n;i++)
		if (n%i==0 && (n/i)&1) ans=(ans+f[i]*2ll*i)%mu;
	printf("%lld\n",ans);
}