#include <iostream>

using namespace std;

char cc;
int t,n;
int a[100005]={0};
long long p=998244353;
int ren,kong,cnt;
int dui[100005]={0};
long long fact[100005]={0},invfact[100005]={0};
long long mi(long long di,long long mm)
{
    long long ans = 1 % p;
    while (mm)
    {
        if (mm&1) ans = ans * di % p;
        di = di * di % p;
        mm >>= 1;
    }
    return ans;
}
void jn()
{
    fact[0]=1;
    for(int i=1;i<=100002;i++) fact[i]=fact[i-1]*i%p;
    invfact[100002]=mi(fact[100002],p-2);
    for(int i=100002;i>=1;i--) invfact[i-1]=invfact[i]*i%p;
}
int main()
{
    cin>>t;
    jn();
    while(t--)
    {
        cin>>n;dui[0]=0;
        for(int i=1;i<=n;i++)
        {
            while((cc=getchar())>'9' or cc<'0');
            a[i]=cc-'0';
        }
        for(int i=1;i<=n;i++)
        {
            if(a[i]==0)
            {
                dui[0]++;
                dui[dui[0]]=0;
            }
            else
            {
                if(dui[dui[0]]==0)dui[0]++;
                dui[dui[0]]++;
            }
        }

        kong=0;ren=0;
        for(int i=1;i<=dui[0];i++)
        {
            if(dui[i]==0)kong++;
            else
            {
                ren=ren+dui[i]/2;
            }
        }
//cout<<ren<<' '<<kong<<' '<<fact[ren+kong]<<'\n';
//for(int i=1;i<=10;i++)cout<<invfact[i]<<' ';
        cout<<((fact[ren+kong]*invfact[ren])%p)*invfact[kong]%p<<'\n';

        for(int i=1;i<=dui[0];i++)dui[i]=0;
    }
    return 0;
}
