func_code_string: #include <bits/stdc++.h>   using namespace std;   #define sim template < class c   #define ris return * this   #define dor > debug & operator <<   #define eni(x) sim > typename      enable_if<sizeof dud<c>(0) x 1, debug&>::type operator<<(c i) {   sim > struct rge { c b, e; };   sim > rge<c> range(c i, c j) { return rge<c>{i, j}; }   sim > auto dud(c* x) -> decltype(cerr << *x, 0);   sim > char dud(...);   struct debug {   #ifndef ONLINE_JUDGE   ~debug() { cerr << endl; }   eni(!=) cerr << boolalpha << i; ris; }   eni(==) ris << range(begin(i), end(i)); }   sim, class b dor(pair < b, c > d) {     ris <<  (  << d.first <<  ,   << d.second <<  ) ;   }   sim dor(rge<c> d) {     *this <<  [ ;     for (auto it = d.b; it != d.e; ++it)       *this <<  ,   + 2 * (it == d.b) << *it;     ris <<  ] ;   }   #else   sim dor(const c&) { ris; }   #endif   };   #define imie(...)   [  << #__VA_ARGS__  :   << (__VA_ARGS__) <<  ]        #define ll long long      const ll mod = 998244353;      long long power(long long x, ll y, ll p)   {       long long res = 1; // Initialize result           x = x % p; // Update x if it is more than or       // equal to p           while (y > 0)       {                   // If y is odd, multiply x with result           if (y & 1)               res = (res * x) % p;               // y must be even now           y = y >> 1; // y = y/2           x = (x * x) % p;       }       return res;   }       // Returns n^(-1) mod p   long long modInverse(long long n, int p)   {       return power(n, p - 2, p);   }       // Returns nCr % p using Fermat s little   // theorem.   long long nCrModPFermat(long long n,int r, int p)   {       // If n<r, then nCr should return 0       if (n < r)           return 0;       // Base case       if (r == 0)           return 1;           // Fill factorial array so that we       // can find all factorial of r, n       // and n-r       long long fac[n + 1];       fac[0] = 1;       for (int i = 1; i <= n; i++)           fac[i] = (fac[i - 1] * i) % p;           return (fac[n] * modInverse(fac[r], p) % p * modInverse(fac[n - r], p) % p) % p;   }      void test_case() {       ll n;       cin >> n;       string s;       cin >> s;       ll cnt = 0, cnt2 = 0, tmp = 0;       for(ll i = 0; i < n; ++i) {           if(s[i] ==  0 ) {               cnt2 = cnt2 + (tmp) / 2;               tmp = 0;               cnt++;           } else {               tmp++;           }       }       cnt2 = cnt2 + (tmp) / 2;       cout << nCrModPFermat(cnt + cnt2, cnt, mod) << endl;   }       int main()   {       ll T;        cin >> T;       for(ll i = 1; i <= T; ++i) {           test_case();       }       return 0;   }