#include using namespace std; using LL = long long; using ULL = unsigned long long; #define rep(i,n) for(int i=0; i<(n); i++) template struct static_modint { ULL x; static_modint(ULL val = 0) : x(val) {} static_modint& operator+=(static_modint r) { x += r.x; if (x >= M) x -= M; return *this; } static_modint operator+(static_modint r) const { static_modint res = x; return res += r; } static_modint& operator-=(static_modint r) { x += M - r.x; if (x >= M) x -= M; return *this; } static_modint operator-(static_modint r) const { static_modint res = x; return res -= r; } static_modint& operator*=(static_modint r) { x = x * r.x % M; return *this; } static_modint operator*(static_modint r) const { return static_modint(x * r.x % M); } static_modint pow(ULL r) const { if (r == 0) return static_modint(1); static_modint res = pow(r / 2); res *= res; if (r % 2) res *= *this; return res; } static_modint& operator/=(static_modint r) { *this *= r.pow(M - 1); return *this; } static_modint operator/(static_modint r) const { return *this * (r.pow(M - 2)); } ULL& operator*() { return x; } const ULL& operator*() const { return x; } bool operator==(static_modint r) const { return x == r; } bool operator!=(static_modint r) const { return x != r; } }; const ULL M = 1000000007; using MLL = static_modint; int N, K; int main() { cin >> N >> K; for(int i = 1; i <= K; i++) { MLL ans; if (i != 1 && N % i == 0){ ans = MLL(N / i).pow(i - 2); ans *= MLL(N / i + 1); ans *= MLL(N / i - 1); } else { ans = MLL(N / i + 1).pow(N % i); ans *= MLL(N / i).pow(i - N % i); } cout << *ans << endl; } return 0; }