#include <iostream>
#include <fstream>
#include <cmath>  
#include <cstdlib>
#include <ctime>
#include <algorithm>
#include <numeric>
#include <functional>
#include <string> 
#include <vector>
#include <bitset>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <deque>

using namespace std;
using ll = long long;
using ull = unsigned long long;
using ld = long double;

#define REP(i,n) for(int i = 0; i < int(n); i++)
#define REREP(i,n) for(int i = int(n - 1); i >= 0; i--)
#define FOR(i, m, n) for(int i = int(m);i < int(n);i++)
#define REFOR(i, m, n) for(int i = int(n - 1);i >= int(m);i--)
#define ALL(obj) (obj).begin(),(obj).end()
#define fi first 
#define se second

#define VI vector<int>
#define VVI vector<vector<int>>
#define VVVI vector<vector<vector<int>>>
#define VD vector<double>
#define VVD vector<vector<double>>
#define VVVD vector<vector<vector<double>>>
#define VL vector<ll>
#define VVL vector<vector<ll>>
#define VVVL vector<vector<vector<ll>>>
#define VB vector<bool>
#define VVB vector<vector<bool>>
#define VVVB vector<vector<vector<bool>>>
#define VS vector<string>
#define VVS vector<vector<string>>
#define VVVS vector<vector<vector<string>>>

#define PII pair<int,int>
#define PDD pair<double,double>
#define PLL pair<ll,ll>
#define VPII vector<pair<int,int>>
#define VVPII vector<vector<pair<int,int>>>
#define VVVPII vector<vector<vector<pair<int,int>>>>
#define VPLL vector<pair<ll,ll>>
#define VVPLL vector<vector<pair<ll,ll>>>
#define VVVPLL vector<vector<vector<pair<ll,ll>>>>

const ll MOD = (ll)998244353;
const ll HINF = (ll)1e18;
const ll LINF = (ll)1e9;
const long double PI = 3.1415926535897932384626433;


void YN(bool flag) {
	cout << ((flag) ? "YES" : "NO") << endl;
}

void Yn(bool flag) {
	cout << ((flag) ? "Yes" : "No") << endl;
}

void yn(bool flag) {
	cout << ((flag) ? "yes" : "no") << endl;
}


//Combination Mod
class Combination_Mod {
public:
	vector<long long> fac, finv, inv;
	long long MOD;

	Combination_Mod(int N, long long mod) : fac(vector<long long>(N + 1)), finv(vector<long long>(N + 1)), inv(vector<long long>(N + 1)), MOD(mod) {
		fac[0] = fac[1] = finv[0] = finv[1] = inv[1] = 1;
		for (int i = 2; i <= N; ++i) {
			fac[i] = fac[i - 1] * i % MOD;
			inv[i] = MOD - inv[MOD%i] * (MOD / i) % MOD;
			finv[i] = finv[i - 1] * inv[i] % MOD;
		}
	}

	long long com(int n, int k) {
		return ((n < 0 || k < 0 || n < k) ? 0 : fac[n] * (finv[k] * finv[n - k] % MOD) % MOD);
	}
};

int main() {
	int K, N; cin >> K >> N;
	Combination_Mod CM(10000, MOD);

	VL pow2(2000 + 1, 1);
	FOR(i, 1, 2001) (pow2[i] = 2 * pow2[i - 1]) %= MOD;

	if (K == 1) {
		cout << 0 << endl;
		return 0;
	}
	
	for (ll i = 2; i <= 2 * K; ++i) {
		ll cnt = i / 2 - ((i <= K + 1) ? 0 : i - (K + 1));
		ll sum = 0;
		if (i & 1) {
			for (int j = 0; j <= cnt; ++j) {
				(sum += ((CM.com(cnt, j) * pow2[j]) %MOD) * CM.com(N - j + K - 2 * cnt + j - 1, N - j)) %= MOD;
			}
		}
		else {
			cnt--;
			for (int j = 0; j <= cnt; ++j) {
				(sum += ((CM.com(cnt, j) * pow2[j]) %MOD) * CM.com(N - j + K - 2 * cnt - 1 + j - 1, N - j))%=MOD;
				(sum += ((CM.com(cnt, j) * pow2[j])%MOD) * CM.com(N - j - 1 + K - 2 * cnt - 1 + j - 1, N - j - 1))%=MOD;
			}
		}
		cout << sum << endl;
	}
	return 0;
}


Measured memory_bytes: 512