#include<bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define fir first
#define sec second
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef unsigned int uint;
typedef pair<int,int> pii;

void read(int& x){
    static char c;int f=0;
    while(!isdigit(c=getchar()))
        if(c=='-') f=1;
    x=c^48;
    while(isdigit(c=getchar())) x=(x*10)+(c^48);
    if(f) x=-x;
}
void read(ll& x){
    static char c;int f=0;
    while(!isdigit(c=getchar()))
    	if(c=='-') f=1;
    x=c^48;
    while(isdigit(c=getchar())) x=(x*10)+(c^48);
    if(f) x=-x;
}
void read(uint& x){
    static char c;
    while(!isdigit(c=getchar()));x=c^48;
    while(isdigit(c=getchar())) x=(x*10)+(c^48);
}
void read(ull& x){
    static char c;
    while(!isdigit(c=getchar()));x=c^48;
    while(isdigit(c=getchar())) x=(x*10)+(c^48);
}
void chkmax(int& x,int y){if(y>x)x=y;}
void chkmin(int& x,int y){if(y<x)x=y;}
void chkmax(ll& x,ll y){if(y>x)x=y;}
void chkmin(ll& x,ll y){if(y<x)x=y;}
void chkmax(uint& x,uint y){if(y>x)x=y;}
void chkmin(uint& x,uint y){if(y<x)x=y;}
void chkmax(ull& x,ull y){if(y>x)x=y;}
void chkmin(ull& x,ull y){if(y<x)x=y;}

const int Mod=998244353;
void Add(int &x,int y){(x+=y)>=Mod?x-=Mod:x;}
int Pow(int a,int b){
	int res=1;
	while(b){
		if(b&1) res=1ll*res*a%Mod;
		a=1ll*a*a%Mod,b>>=1;
	}
	return res;
}

const int N=2e5+10;

int Fac[N],Iac[N];
void Init(){
	const int _=2e5;
	Fac[0]=Iac[0]=1;
	for(int i=1;i<=_;++i) Fac[i]=1ll*Fac[i-1]*i%Mod;
	Iac[_]=Pow(Fac[_],Mod-2);
	for(int i=_-1;i;--i) Iac[i]=1ll*Iac[i+1]*(i+1)%Mod;
}
int Binom(int n,int m){return 1ll*Fac[n]*Iac[m]%Mod*Iac[n-m]%Mod;}

int T,n;
char str[N];

void Solve(){
	read(n);
	scanf("%s",str+1);
	int a=0,b=0;
	for(int i=1;i<=n;++i)
		if(str[i]=='0') ++a;
		else
			if(str[i-1]=='1') ++b,str[i]='0';
	printf("%d\n",Binom(a+b,b));
}

void Work(){
	Init(),read(T);
	while(T--) Solve();
}

int main(){Work();}
