#include #include const long long Mod = 998244353; const int MaxN = 2001; std::vector> memo(MaxN * 2 + 1, std::vector(MaxN * 2 + 1, -1)); long long saiki(long long l, long long r) { if (memo[l][r] != -1) { return memo[l][r]; } if (l == 0 && r == 0) { return memo[l][r] = 1; } if (l == 0 && r != 0) { return memo[l][r] = 0; } if (l != 0 && r == 0) { return memo[l][r] = 0; } if (l >= 2 && r >= 2) { memo[l][r] = (saiki(l - 1, r - 1) * (1 + (l - 1) * (r - 1)) + saiki(l - 2, r) * (l - 2) * (l - 1) / 2 + saiki(l, r - 2) * (r - 2) * (r - 1) / 2) % Mod; return memo[l][r]; } if (l >= 2) { memo[l][r] = (saiki(l - 1, r - 1) + saiki(l - 2, r) * (l - 2) * (l - 1) / 2) % Mod; return memo[l][r]; } if (r >= 2) { memo[l][r] = (saiki(l - 1, r - 1) + saiki(l, r - 2) * (r - 2) * (r - 1) / 2) % Mod; return memo[l][r]; } return memo[l][r] = saiki(l - 1, r - 1) % Mod; } int main() { long long N; std::cin >> N; for (long long k = 0; k <= 2 * N; ++k) { std::cout << saiki(k, 2 * N - k) << std::endl; } return 0; }