/* Author haleyk10198 */
/* 作者: haleyk10198 */
/* CF handle: haleyk100198*/
#include <bits/stdc++.h>
#define MOD 998244353
#define LINF (1LL<<60)
#define INF 2147483647
#define PI 3.1415926535897932384626433
#define ll long long
#define pii pair<int,int>
#define mp(x,y) make_pair((x),(y))
#define MAXN 16
#define logMAXN 4
using namespace std;
string itos(int x){
stringstream ss;
ss << x;
return ss.str();
}
complex<double> dp[5][MAXN];
int rev[MAXN];
complex<double> lookup[MAXN];
int n, k;
void fft(complex<double> *a, int inv){
for(int i = 0; i < MAXN; i++){
if(rev[i] != -1)
swap(a[rev[i]], a[i]);
}
complex<double> now;
for(int sz = 2; sz <= MAXN; sz <<= 1){
int k = MAXN/sz;
for(int i = 0; i < MAXN; i += sz){
for(int j = 0; j < sz/2; j++){
now = lookup[j*k];
if(sz == MAXN && inv)
now = conj(now);
complex<double> x = a[i+j];
complex<double> y = now*a[i+j+sz/2];
a[i+j] = x+y;
a[i+j+sz/2] = x-y;
}
}
}
if(inv)
for(int i = 0; i < MAXN; i++)
a[i] /= MAXN;
}
int main(){
//freopen("input.txt","r",stdin);
//freopen("output.txt","w",stdout);
ios_base::sync_with_stdio(false);
cin >> n >> k;
for(int i = 0; i < MAXN; i++){
int t = i;
int j = 0;
for(int k = 0; k < logMAXN; k++){
j <<= 1;
j |= (i%2);
i >>= 1;
}
i = t;
if(i < j)
rev[i] = j;
else
rev[i] = -1;
}
{
complex<double> now = complex<double>(1, 0);
complex<double> it = complex<double>(cos(2*PI/MAXN), sin(2*PI/MAXN));
for(int j = 0; j < MAXN; j++){
lookup[j] = now;
now *= it;
}
}
dp[1][0] = dp[0][1] = 1;
dp[0][0] = 3;
fft(dp[0], 0);
for(int i = 0; i < MAXN; i++)
cout << dp[0][i] << (i+1 == MAXN? '\n': ' ');
/*for(int now = 2, dx = sizeof(int)*8 - __builtin_clz(n) - 2; now < n; dx--){
if((n >> dx) % 2){
for(int i = 0; i < MAXN; i++)
dp[2][i] = dp[1][i], dp[1][i] = dp[0][i];
for(int i = 0; i < MAXN; i++)
dp[0][i] = dp[1][i] + (i? dp[1][i-1] + dp[2][i-1]: 2);
now ^= 1;
}
if((now << 1) <= n){
now <<= 1;
for(int i = 0; i < 3; i++)
fft(dp[i], 0);
for(int j = 4; j >= 0; j--)
for(int i = 0; i < MAXN; i++)
dp[j][i] = dp[j/2][i] * dp[(j+1)/2][i];
for(int i = 0; i < 5; i++){
fft(dp[i], 1);
for(int j = 0; j < MAXN; j++){
dp[i][j].imag(0);
dp[i][j].real(lround(fmod(dp[i][j].real(), MOD)));
}
}
for(int i = 0; i < 5; i++){
for(int k = 1; k < MAXN; k++){
dp[i][k].real(fmod(dp[i+2][k-1].real()*dp[i+2][k-1].real()+dp[i][k].real(), MOD));
}
}
}
}
if(n < 2)
for(int i = 0; i < k; i++)
cout << dp[2-n][i].real() << (i == k? '\n': ' ');
else
for(int i = 0; i < k; i++)
cout << dp[0][i].real() << (i == k? '\n': ' ');*/
return 0;
}
/*
Correct FFT output of dp[0] with a size 8 from online calculators
in a form (real, imag)
4.000000,0.000000
3.923880,-0.382683
3.707107,-0.707107
3.382683,-0.923880
3.000000,-1.000000
2.617317,-0.923880
2.292893,-0.707107
2.076120,-0.382683
2.000000,0.000000
2.076120,0.382683
2.292893,0.707107
2.617317,0.923880
3.000000,1.000000
3.382683,0.923880
3.707107,0.707107
3.923880,0.382683
*/
LyogQXV0aG9yIGhhbGV5azEwMTk4ICovCi8qIOS9nOiAhTogIGhhbGV5azEwMTk4ICovCi8qIENGIGhhbmRsZTogaGFsZXlrMTAwMTk4Ki8KI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIE1PRCA5OTgyNDQzNTMKI2RlZmluZSBMSU5GICgxTEw8PDYwKQojZGVmaW5lIElORiAyMTQ3NDgzNjQ3CiNkZWZpbmUgUEkgMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjI2NDMzCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBtcCh4LHkpIG1ha2VfcGFpcigoeCksKHkpKQojZGVmaW5lIE1BWE4gMTYKI2RlZmluZSBsb2dNQVhOIDQKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJpbmcgaXRvcyhpbnQgeCl7CglzdHJpbmdzdHJlYW0gc3M7CglzcyA8PCB4OwoJcmV0dXJuIHNzLnN0cigpOwp9Cgpjb21wbGV4PGRvdWJsZT4gZHBbNV1bTUFYTl07CgppbnQgcmV2W01BWE5dOwoKY29tcGxleDxkb3VibGU+IGxvb2t1cFtNQVhOXTsgCgppbnQgbiwgazsKCnZvaWQgZmZ0KGNvbXBsZXg8ZG91YmxlPiAqYSwgaW50IGludil7Cglmb3IoaW50IGkgPSAwOyBpIDwgTUFYTjsgaSsrKXsKCQlpZihyZXZbaV0gIT0gLTEpCgkJCXN3YXAoYVtyZXZbaV1dLCBhW2ldKTsKCX0KCWNvbXBsZXg8ZG91YmxlPiBub3c7IAoJZm9yKGludCBzeiA9IDI7IHN6IDw9IE1BWE47IHN6IDw8PSAxKXsKCQlpbnQgayA9IE1BWE4vc3o7CgkJZm9yKGludCBpID0gMDsgaSA8IE1BWE47IGkgKz0gc3opewoJCQlmb3IoaW50IGogPSAwOyBqIDwgc3ovMjsgaisrKXsKCQkJCW5vdyA9IGxvb2t1cFtqKmtdOwoJCQkJaWYoc3ogPT0gTUFYTiAmJiBpbnYpCgkJCQkJbm93ID0gY29uaihub3cpOwoJCQkJY29tcGxleDxkb3VibGU+IHggPSBhW2kral07CgkJCQljb21wbGV4PGRvdWJsZT4geSA9IG5vdyphW2kraitzei8yXTsKCQkJCWFbaStqXSA9IHgreTsKCQkJCWFbaStqK3N6LzJdID0geC15OwoJCQl9CgkJfQoJfQoJaWYoaW52KQoJCWZvcihpbnQgaSA9IDA7IGkgPCBNQVhOOyBpKyspCgkJCWFbaV0gLz0gTUFYTjsKfQoKaW50IG1haW4oKXsKCS8vZnJlb3BlbigiaW5wdXQudHh0IiwiciIsc3RkaW4pOwoJLy9mcmVvcGVuKCJvdXRwdXQudHh0IiwidyIsc3Rkb3V0KTsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwoJY2luID4+IG4gPj4gazsKCWZvcihpbnQgaSA9IDA7IGkgPCBNQVhOOyBpKyspewoJCWludCB0ID0gaTsKCQlpbnQgaiA9IDA7CgkJZm9yKGludCBrID0gMDsgayA8IGxvZ01BWE47IGsrKyl7CgkJCWogPDw9IDE7CgkJCWogfD0gKGklMik7CgkJCWkgPj49IDE7CgkJfQoJCWkgPSB0OwoJCWlmKGkgPCBqKQoJCQlyZXZbaV0gPSBqOwoJCWVsc2UKCQkJcmV2W2ldID0gLTE7Cgl9Cgl7CgkJY29tcGxleDxkb3VibGU+IG5vdyA9IGNvbXBsZXg8ZG91YmxlPigxLCAwKTsKCQljb21wbGV4PGRvdWJsZT4gaXQgPSBjb21wbGV4PGRvdWJsZT4oY29zKDIqUEkvTUFYTiksIHNpbigyKlBJL01BWE4pKTsKCQlmb3IoaW50IGogPSAwOyBqIDwgTUFYTjsgaisrKXsKCQkJbG9va3VwW2pdID0gbm93OwoJCQlub3cgKj0gaXQ7CgkJfQoJfQoJZHBbMV1bMF0gPSBkcFswXVsxXSA9IDE7CglkcFswXVswXSA9IDM7CglmZnQoZHBbMF0sIDApOwoJZm9yKGludCBpID0gMDsgaSA8IE1BWE47IGkrKykKCQljb3V0IDw8IGRwWzBdW2ldIDw8IChpKzEgPT0gTUFYTj8gJ1xuJzogJyAnKTsKCS8qZm9yKGludCBub3cgPSAyLCBkeCA9IHNpemVvZihpbnQpKjggLSBfX2J1aWx0aW5fY2x6KG4pIC0gMjsgbm93IDwgbjsgZHgtLSl7CgkJaWYoKG4gPj4gZHgpICUgMil7CgkJCWZvcihpbnQgaSA9IDA7IGkgPCBNQVhOOyBpKyspCgkJCQlkcFsyXVtpXSA9IGRwWzFdW2ldLCBkcFsxXVtpXSA9IGRwWzBdW2ldOwoJCQlmb3IoaW50IGkgPSAwOyBpIDwgTUFYTjsgaSsrKQoJCQkJZHBbMF1baV0gPSBkcFsxXVtpXSArIChpPyBkcFsxXVtpLTFdICsgZHBbMl1baS0xXTogMik7CgkJCW5vdyBePSAxOwoJCX0KCQlpZigobm93IDw8IDEpIDw9IG4pewoJCQlub3cgPDw9IDE7CgkJCWZvcihpbnQgaSA9IDA7IGkgPCAzOyBpKyspCgkJCQlmZnQoZHBbaV0sIDApOwoJCQlmb3IoaW50IGogPSA0OyBqID49IDA7IGotLSkKCQkJCWZvcihpbnQgaSA9IDA7IGkgPCBNQVhOOyBpKyspCgkJCQkJZHBbal1baV0gPSBkcFtqLzJdW2ldICogZHBbKGorMSkvMl1baV07CgkJCWZvcihpbnQgaSA9IDA7IGkgPCA1OyBpKyspewoJCQkJZmZ0KGRwW2ldLCAxKTsKCQkJCWZvcihpbnQgaiA9IDA7IGogPCBNQVhOOyBqKyspewoJCQkJCWRwW2ldW2pdLmltYWcoMCk7CgkJCQkJZHBbaV1bal0ucmVhbChscm91bmQoZm1vZChkcFtpXVtqXS5yZWFsKCksIE1PRCkpKTsKCQkJCX0KCQkJfQoJCQlmb3IoaW50IGkgPSAwOyBpIDwgNTsgaSsrKXsKCQkJCWZvcihpbnQgayA9IDE7IGsgPCBNQVhOOyBrKyspewoJCQkJCWRwW2ldW2tdLnJlYWwoZm1vZChkcFtpKzJdW2stMV0ucmVhbCgpKmRwW2krMl1bay0xXS5yZWFsKCkrZHBbaV1ba10ucmVhbCgpLCBNT0QpKTsKCQkJCX0KCQkJfQoJCX0KCX0KCWlmKG4gPCAyKQoJCWZvcihpbnQgaSA9IDA7IGkgPCBrOyBpKyspCgkJCWNvdXQgPDwgZHBbMi1uXVtpXS5yZWFsKCkgPDwgKGkgPT0gaz8gJ1xuJzogJyAnKTsKCWVsc2UKCQlmb3IoaW50IGkgPSAwOyBpIDwgazsgaSsrKQoJCQljb3V0IDw8IGRwWzBdW2ldLnJlYWwoKSA8PCAoaSA9PSBrPyAnXG4nOiAnICcpOyovCglyZXR1cm4gMDsKfQoKLyoKQ29ycmVjdCBGRlQgb3V0cHV0IG9mIGRwWzBdIHdpdGggYSBzaXplIDggZnJvbSBvbmxpbmUgY2FsY3VsYXRvcnMKaW4gYSBmb3JtIChyZWFsLCBpbWFnKQo0LjAwMDAwMCwwLjAwMDAwMAozLjkyMzg4MCwtMC4zODI2ODMKMy43MDcxMDcsLTAuNzA3MTA3CjMuMzgyNjgzLC0wLjkyMzg4MAozLjAwMDAwMCwtMS4wMDAwMDAKMi42MTczMTcsLTAuOTIzODgwCjIuMjkyODkzLC0wLjcwNzEwNwoyLjA3NjEyMCwtMC4zODI2ODMKMi4wMDAwMDAsMC4wMDAwMDAKMi4wNzYxMjAsMC4zODI2ODMKMi4yOTI4OTMsMC43MDcxMDcKMi42MTczMTcsMC45MjM4ODAKMy4wMDAwMDAsMS4wMDAwMDAKMy4zODI2ODMsMC45MjM4ODAKMy43MDcxMDcsMC43MDcxMDcKMy45MjM4ODAsMC4zODI2ODMKKi8=
(4,0) (3.92388,0.382683) (3.70711,0.707107) (3.38268,0.92388) (3,1) (2.61732,0.92388) (2.29289,0.707107) (2.07612,0.382683) (2,0) (2.07612,-0.382683) (2.29289,-0.707107) (2.61732,-0.92388) (3,-1) (3.38268,-0.92388) (3.70711,-0.707107) (3.92388,-0.382683)