#include <algorithm>
#include <iomanip>
#include <iostream>
#include <vector>
#include <set>
#include <numeric>
#include <map>
#include <unordered_map>
#include <cmath>
using namespace std;
#define all(a) a.begin(), a.end()
#define ll long long
#define fo(i,n) for (long long i = 0; i < n; i++)
bool comp(pair<char,ll> a, pair<char,ll> b)
{
return (a.first < b.first);
}
bool comp2(pair<char,ll> a, pair<char,ll> b)
{
return (a.first > b.first);
}
ll power(ll x, ll y)
{
ll res = 1; // Initialize result
while (y > 0) {
// If y is odd, multiply x with result
if (y & 1)
res = res * x;
// y must be even now
y = y >> 1; // y = y/2
x = x * x; // Change x to x^2
}
return res;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
ll n,m,i;
ll a,b;
string input;
cin >> i;
while (i--)
{
cin >> n;
vector<ll> nums(n);
fo(j,n)
{
cin >> nums[j];
}
ll count2 = 0;
ll sum = 0;
for (int j = 0; j < n; j++)
{
if (nums[j] == 1)
{
count2 = 0;
for (int k = j+1; k < n; k++)
{
if (nums[k] == 2)
{
count2++;
}
if (nums[k] == 3)
{
sum += power(2,count2)-1%998244353;
}
}
}
}
cout << sum << '\n';
}
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvbWFuaXA+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPG51bWVyaWM+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgojaW5jbHVkZSA8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgYWxsKGEpIGEuYmVnaW4oKSwgYS5lbmQoKQojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGZvKGksbikgZm9yIChsb25nIGxvbmcgaSA9IDA7IGkgPCBuOyBpKyspCmJvb2wgY29tcChwYWlyPGNoYXIsbGw+IGEsIHBhaXI8Y2hhcixsbD4gYikKewogICAgcmV0dXJuIChhLmZpcnN0IDwgYi5maXJzdCk7Cn0KYm9vbCBjb21wMihwYWlyPGNoYXIsbGw+IGEsIHBhaXI8Y2hhcixsbD4gYikKewogICAgcmV0dXJuIChhLmZpcnN0ID4gYi5maXJzdCk7Cn0KbGwgcG93ZXIobGwgeCwgbGwgeSkKewogICAgbGwgcmVzID0gMTsgLy8gSW5pdGlhbGl6ZSByZXN1bHQKCiAgICB3aGlsZSAoeSA+IDApIHsKICAgICAgICAvLyBJZiB5IGlzIG9kZCwgbXVsdGlwbHkgeCB3aXRoIHJlc3VsdAogICAgICAgIGlmICh5ICYgMSkKICAgICAgICAgICAgcmVzID0gcmVzICogeDsKCiAgICAgICAgLy8geSBtdXN0IGJlIGV2ZW4gbm93CiAgICAgICAgeSA9IHkgPj4gMTsgLy8geSA9IHkvMgogICAgICAgIHggPSB4ICogeDsgLy8gQ2hhbmdlIHggdG8geF4yCiAgICB9CiAgICByZXR1cm4gcmVzOwp9CmludCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIGxsIG4sbSxpOwogICAgbGwgYSxiOwogICAgc3RyaW5nIGlucHV0OwogICAgY2luID4+IGk7CiAgICB3aGlsZSAoaS0tKQogICAgewogICAgICAgIGNpbiA+PiBuOwogICAgICAgIHZlY3RvcjxsbD4gbnVtcyhuKTsKICAgICAgICBmbyhqLG4pCiAgICAgICAgewogICAgICAgICAgICBjaW4gPj4gbnVtc1tqXTsKICAgICAgICB9CiAgICAgICAgbGwgY291bnQyID0gMDsKICAgICAgICBsbCBzdW0gPSAwOwogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbjsgaisrKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKG51bXNbal0gPT0gMSkKICAgICAgICAgICAgewogICAgICAgICAgICAJY291bnQyID0gMDsKICAgICAgICAgICAgICAgIGZvciAoaW50IGsgPSBqKzE7IGsgPCBuOyBrKyspCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG51bXNba10gPT0gMikKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50MisrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAobnVtc1trXSA9PSAzKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3VtICs9IHBvd2VyKDIsY291bnQyKS0xJTk5ODI0NDM1MzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY291dCA8PCBzdW0gPDwgJ1xuJzsKICAgIH0KfQ==