#include <iostream>
#include <cstdio> //定义输入/输出函数
#include <stack> //STL 堆栈容器
#include <map> //STL 映射容器
#include<set>
#include <vector> //STL 动态数组容器
#include <string> //字符串类
#include <iterator> //STL迭代器
#include <cstdlib> //定义杂项函数及内存分配函数
#include <cstring> //字符串处理ed
#include<algorithm>
#include<queue>
#include<cmath>
#include<iomanip>
#include<fstream>
#include<ctime>
using namespace std;
#define ll long long
#define ull unsigned long long
#define FOR(ITER,BEGIN,END) for(int ITER=BEGIN;ITER<END;ITER++)
#define PER(ITER,TIMES) FOR(ITER,0,TIMES)
#define TIME(TIME_NUMBER) PER(_PETER_MRSCO_ITER_,TIME_NUMBER)
#define close_stdin ios::sync_with_stdio(false)
#define inf 0x3f3f3f3f
#define llm 1e16
#define out_put(l,r,aaaa) {for (int i=l;i<=r;i++){cout<<aaaa[i]<<" ";}cout<<"\n";}
const int maxn = 5e6;
ll iv[maxn+3];
const ll mod = 998244353;
ll n;
//快速幂 别版本
long long fastPower(long long base, long long power, long long mod) {
long long result = 1;
while (power > 0) {
if (power & 1) {//此处等价于if(power%2==1)
result = result * base % mod;
}
power >>= 1;//此处等价于power=power/2
base = (base * base) % mod;
}
return result;
}
// 用于预处理 中 维护一个 inv[maxn] 复杂度只有O(n)极其好用
void presolve() {
iv[1] = 1;
for (ll i = 2;i <= 5e6;i++) { iv[i] = iv[mod % i] * (mod - mod / i) % mod; }
}
void solve() {
cin >> n;
for(int i=1;i<=n/2;i++){
cout <<0<<" ";
}
ll s = fastPower(iv[2], n / 2, mod);
cout << s;
if (n == 1) { cout << "\n";return; }
else { cout << " "; }
for (ll i = n / 2+1 ;i <n;i++) {
s = s * i % mod * iv[2 * i - n + 1] % mod;
cout << s << (i==n-1?'\n':' ');
}
}
int main() {
close_stdin;
cin.tie(0);
cout.tie(0);
presolve();
int t;
cin >> t;
while (t--) {
solve();
}
}