il poly solve(int n) {
poly f = {0, 2}; int l = 1; do {
int s = l; l <<= 1; f.resize(l + 2); poly g = exp(f), u(s), v(s);
for (int i = 0; i < s; i++) u[i] = g[s + 2 + i], v[i] = g[i + 1]; v[0] += -!v[0] & p, v[0]--;
g = u * inv(v); for (int i = 0; i < s; i++) f[s + 1 + i] = neg(g[i]);
} while (l < n); f.resize(n); return f;
}
int main() {
int n = rd(), m = rd(); poly f = solve(n + 1), tf = f >> 1; // return 0;
tf.resize(n + 1), f = deri(f) * pow(inv(tf), n + 1); poly g(m + 1, 0), h(m + 1, 0);
for (int i = 0; i <= m; i++) g[i] = ifac[i], h[i] = i <= n ? (ll)ifac[i] * f[n - i] % p : 0; g = g * h;
for (int i = 1; i <= m; i++) pt((ll)g[i] * fac[n + i] % p), pc(' ');
}