#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
typedef long long ll;
typedef vector <ll> vll;
typedef set <ll> sll;
typedef vector <vector<ll>> vvll;
typedef set<pair<ll,ll>> spll;
typedef vector <bool> vbl;
typedef vector <pair<ll,ll>> vpll;
typedef map <ll,ll> mll;
#define yen cout<<"YES"<<"\n"
#define ye cout<<"YES"
#define non cout<<"NO"<<"\n"
#define no cout<<"NO"
#define pb push_back
#define bk break
#define co continue
#define ff first
#define ss second
#define f(i, a, b) for (long long i = (a); i <= (b); i++)
#define fr(i, a, b) for (long long i = (b); i >= (a); i--)
ll LMA=LLONG_MAX;
ll LMI=LLONG_MIN;
void pr(vector <ll> &v)
{
ll sz=v.size();
sz-=2;
for (ll i=1;i<=sz;i++)
{
cout<<v[i]<<" ";
}
cout<<"\n";
}
void pr0(vector <ll> &v)
{
for (auto elem:v)
{
cout<<elem<<" ";
}
cout<<"\n";
}
template<typename T>
using ordered_set = tree<
T,
null_type,
less<T>,
rb_tree_tag,
tree_order_statistics_node_update>;
const ll MAXN=500;
const ll MOD=998244353;
ll factorial[MAXN + 1];
ll inverse_factorial[MAXN + 1];
// Function to compute power of a number with modular arithmetic
ll power(ll x, ll y)
{
ll res=1;
x=x%MOD;
while (y>0)
{
if ((y&1)!=0)
{
res=(res*x)%MOD;
}
y=y>>1;
x=(x*x)%MOD;
}
return res;
}
void compute_factorials()
{
factorial[0]=1;
for (ll i=1;i<= MAXN;++i)
{
factorial[i]=(factorial[i-1]*i)%MOD;
}
}
void compute_inverse_factorials()
{
inverse_factorial[MAXN]=power(factorial[MAXN],MOD-2);
for (ll i=(MAXN - 1);i>=0;--i)
{
inverse_factorial[i]=(inverse_factorial[i+1]*(i+1))%MOD;
}
}
ll binomial_coefficient(ll n, ll k)
{
if (k>n)
{
return 0;
}
return (((factorial[n]*inverse_factorial[k])%MOD)*inverse_factorial[n-k])%MOD;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
ll t=1;
cin>>t;
compute_factorials();
compute_inverse_factorials();
while (t--)
{
ll n;
cin>>n;
ll answer=0;
for (ll m=1;m<=(n-1);m++)
{
for (ll i=0;i<=(m+1);i++)
{
ll temp=power(2*m-i,n);
temp=(temp*binomial_coefficient(m+1,i))%MOD;
if ((i%2)==1)
{
temp=(-temp+MOD)%MOD;
}
answer=(answer+temp)%MOD;
}
}
cout<<answer<<"\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+CnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwojcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIiKQojcHJhZ21hIEdDQyBvcHRpbWl6ZSgiTzMiKQojcHJhZ21hIEdDQyBvcHRpbWl6ZSgidW5yb2xsLWxvb3BzIikKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgdmVjdG9yIDxsbD4gdmxsOwp0eXBlZGVmIHNldCA8bGw+IHNsbDsKdHlwZWRlZiB2ZWN0b3IgPHZlY3RvcjxsbD4+IHZ2bGw7CnR5cGVkZWYgc2V0PHBhaXI8bGwsbGw+PiBzcGxsOwp0eXBlZGVmIHZlY3RvciA8Ym9vbD4gdmJsOwp0eXBlZGVmIHZlY3RvciA8cGFpcjxsbCxsbD4+IHZwbGw7CnR5cGVkZWYgbWFwIDxsbCxsbD4gbWxsOwoKI2RlZmluZSB5ZW4gY291dDw8IllFUyI8PCJcbiIKI2RlZmluZSB5ZSBjb3V0PDwiWUVTIgojZGVmaW5lIG5vbiBjb3V0PDwiTk8iPDwiXG4iCiNkZWZpbmUgbm8gY291dDw8Ik5PIgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGJrIGJyZWFrCiNkZWZpbmUgY28gY29udGludWUKI2RlZmluZSBmZiBmaXJzdAojZGVmaW5lIHNzIHNlY29uZAojZGVmaW5lIGYoaSwgYSwgYikgZm9yIChsb25nIGxvbmcgaSA9IChhKTsgaSA8PSAoYik7IGkrKykKI2RlZmluZSBmcihpLCBhLCBiKSBmb3IgKGxvbmcgbG9uZyBpID0gKGIpOyBpID49IChhKTsgaS0tKQoKbGwgTE1BPUxMT05HX01BWDsKbGwgTE1JPUxMT05HX01JTjsKCnZvaWQgcHIodmVjdG9yIDxsbD4gJnYpCnsKICAgIGxsIHN6PXYuc2l6ZSgpOwogICAgc3otPTI7CiAgICBmb3IgKGxsIGk9MTtpPD1zejtpKyspCiAgICB7CiAgICAgICAgY291dDw8dltpXTw8IiAiOwogICAgfQogICAgY291dDw8IlxuIjsKfQoKdm9pZCBwcjAodmVjdG9yIDxsbD4gJnYpCnsKICAgIGZvciAoYXV0byBlbGVtOnYpCiAgICB7CiAgICAgICAgY291dDw8ZWxlbTw8IiAiOwogICAgfQogICAgY291dDw8IlxuIjsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KdXNpbmcgb3JkZXJlZF9zZXQgPSB0cmVlPAogICAgVCwKICAgIG51bGxfdHlwZSwKICAgIGxlc3M8VD4sCiAgICByYl90cmVlX3RhZywKICAgIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT47Cgpjb25zdCBsbCBNQVhOPTUwMDsKY29uc3QgbGwgTU9EPTk5ODI0NDM1MzsKbGwgZmFjdG9yaWFsW01BWE4gKyAxXTsKbGwgaW52ZXJzZV9mYWN0b3JpYWxbTUFYTiArIDFdOwoKLy8gRnVuY3Rpb24gdG8gY29tcHV0ZSBwb3dlciBvZiBhIG51bWJlciB3aXRoIG1vZHVsYXIgYXJpdGhtZXRpYwpsbCBwb3dlcihsbCB4LCBsbCB5KQp7CiAgICBsbCByZXM9MTsKICAgIHg9eCVNT0Q7CiAgICB3aGlsZSAoeT4wKQogICAgewogICAgICAgIGlmICgoeSYxKSE9MCkKICAgICAgICB7CiAgICAgICAgICAgIHJlcz0ocmVzKngpJU1PRDsKICAgICAgICB9CiAgICAgICAgeT15Pj4xOwogICAgICAgIHg9KHgqeCklTU9EOwogICAgfQogICAgcmV0dXJuIHJlczsKfQoKdm9pZCBjb21wdXRlX2ZhY3RvcmlhbHMoKQp7CiAgICBmYWN0b3JpYWxbMF09MTsKICAgIGZvciAobGwgaT0xO2k8PSBNQVhOOysraSkKICAgIHsKICAgICAgICBmYWN0b3JpYWxbaV09KGZhY3RvcmlhbFtpLTFdKmkpJU1PRDsKICAgIH0KfQoKdm9pZCBjb21wdXRlX2ludmVyc2VfZmFjdG9yaWFscygpCnsKICAgIGludmVyc2VfZmFjdG9yaWFsW01BWE5dPXBvd2VyKGZhY3RvcmlhbFtNQVhOXSxNT0QtMik7CiAgICBmb3IgKGxsIGk9KE1BWE4gLSAxKTtpPj0wOy0taSkKICAgIHsKICAgICAgICBpbnZlcnNlX2ZhY3RvcmlhbFtpXT0oaW52ZXJzZV9mYWN0b3JpYWxbaSsxXSooaSsxKSklTU9EOwogICAgfQp9CgpsbCBiaW5vbWlhbF9jb2VmZmljaWVudChsbCBuLCBsbCBrKQp7CiAgICBpZiAoaz5uKQogICAgewogICAgICAgIHJldHVybiAwOwogICAgfQogICAgcmV0dXJuICgoKGZhY3RvcmlhbFtuXSppbnZlcnNlX2ZhY3RvcmlhbFtrXSklTU9EKSppbnZlcnNlX2ZhY3RvcmlhbFtuLWtdKSVNT0Q7Cn0KCmludCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKDApOwogICAgCiAgICBsbCB0PTE7CiAgICBjaW4+PnQ7CiAgICAKICAgIGNvbXB1dGVfZmFjdG9yaWFscygpOwogICAgY29tcHV0ZV9pbnZlcnNlX2ZhY3RvcmlhbHMoKTsKCiAgICB3aGlsZSAodC0tKQogICAgewogICAgICAgIGxsIG47CiAgICAgICAgY2luPj5uOwogICAgICAgIGxsIGFuc3dlcj0wOwogICAgICAgIGZvciAobGwgbT0xO208PShuLTEpO20rKykKICAgICAgICB7CiAgICAgICAgICAgIGZvciAobGwgaT0wO2k8PShtKzEpO2krKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbGwgdGVtcD1wb3dlcigyKm0taSxuKTsKICAgICAgICAgICAgICAgIHRlbXA9KHRlbXAqYmlub21pYWxfY29lZmZpY2llbnQobSsxLGkpKSVNT0Q7CiAgICAgICAgICAgICAgICBpZiAoKGklMik9PTEpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdGVtcD0oLXRlbXArTU9EKSVNT0Q7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhbnN3ZXI9KGFuc3dlcit0ZW1wKSVNT0Q7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY291dDw8YW5zd2VyPDwiXG4iOwogICAgfQogICAgCiAgICByZXR1cm4gMDsKfQ==