← Home
package main

import (
	"fmt"
)

func power(base, exp int64) int64 {
	res := int64(1)
	base %= 1000000007
	for exp > 0 {
		if exp%2 == 1 {
			res = (res * base) % 1000000007
		}
		base = (base * base) % 1000000007
		exp /= 2
	}
	return res
}

func modInverse(n int64) int64 {
	return power(n, 1000000007-2)
}

func main() {
	var n, k int
	if _, err := fmt.Scan(&n, &k); err != nil {
		return
	}

	MOD := int64(1000000007)

	C := make([][]int64, k+5)
	for i := range C {
		C[i] = make([]int64, k+5)
		C[i][0] = 1
		for j := 1; j <= i; j++ {
			C[i][j] = (C[i-1][j-1] + C[i-1][j]) % MOD
		}
	}

	B := make([]int64, k+5)
	B[0] = 1
	for m := 1; m <= k+1; m++ {
		sum := int64(0)
		for j := 0; j < m; j++ {
			sum = (sum + C[m+1][j]*B[j]) % MOD
		}
		sum = (sum * modInverse(int64(m+1))) % MOD
		B[m] = (MOD - sum) % MOD
	}

	N := int64(n) % MOD
	N_pow := make([]int64, k+5)
	N_pow[0] = 1
	for i := 1; i <= k+2; i++ {
		N_pow[i] = (N_pow[i-1] * N) % MOD
	}

	P := make([]int64, k+5)
	for p := 1; p <= k; p++ {
		sum := int64(0)
		for j := 0; j <= p; j++ {
			term := (C[p+1][j] * B[j]) % MOD
			term = (term * N_pow[p+1-j]) % MOD
			sum = (sum + term) % MOD
		}
		P[p] = (sum * modInverse(int64(p+1))) % MOD
	}

	e := make([]int64, k+5)
	e[0] = 1
	for m := 1; m <= k; m++ {
		sum := int64(0)
		for i := 1; i <= m; i++ {
			term := (e[m-i] * P[i]) % MOD
			if i%2 == 1 {
				sum = (sum + term) % MOD
			} else {
				sum = (sum - term + MOD) % MOD
			}
		}
		e[m] = (sum * modInverse(int64(m))) % MOD
	}

	for j := 1; j <= k; j++ {
		ans := int64(0)
		for m := j % 2; m <= j; m += 2 {
			ans = (ans + e[m]) % MOD
		}
		if j > 1 {
			fmt.Print(" ")
		}
		fmt.Print(ans)
	}
	fmt.Println()
}