#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define rep(i, a) for (int i = 0; i < (a); i++) #define rep2(i, a, b) for (int i = (a); i < (b); i++) #define repr(i, a) for (int i = (a) - 1; i >= 0; i--) #define repr2(i, a, b) for (int i = (b) - 1; i >= (a); i--) template bool chmin(T1 &a, T2 b) { return b < a && (a = b, true); } template bool chmax(T1 &a, T2 b) { return a < b && (a = b, true); } typedef long long ll; const ll mod = 1e9 + 7; long long modpow(long long a, long long b, long long mod) { long long ret = 1; for (; b > 0; a = a * a % mod, b /= 2) if (b & 1) ret = ret * a % mod; return ret; } long long modinv(long long a, long long mod) { return modpow(a, mod - 2, mod); } ll F[101010], Finv[101010]; ll C(ll a, ll b) { if (a < b || a < 0 || b < 0) return 0; return F[a] * Finv[b] % mod * Finv[a - b] % mod; } map mp[101010]; vector ds[101010]; void precalc() { F[0] = 1; rep2(i, 1, 101010) F[i] = i * F[i - 1] % mod; Finv[101010 - 1] = modinv(F[101010 - 1], mod); repr(i, 101010 - 1) Finv[i] = Finv[i + 1] * (i + 1) % mod; const int N = 101010; vector isPrime(N, true); for (int i = 2; i < N; i++) if (isPrime[i]) { for (int j = i * 2; j < N; j += i) isPrime[j] = false; for (ll p = i, c = 1; p < N; p *= i, c++) { for (ll j = p; j < N; j += p) mp[j][i]++; } } for (int i = 1; i < N; i++) { for (int j = i; j < N; j += i) ds[j].push_back(i); } } void solve() { int n, k; cin >> n >> k; vector f(n + 1); rep(i, n) scanf("%lld", &f[i + 1]); vector way(n + 1); for (int i = 1; i <= n; i++) { way[i] = 1; for (map::iterator it = mp[i].begin(); it != mp[i].end(); it++) { (way[i] *= C(k - 1 + it->second, k - 1)) %= mod; } } vector ans(n + 1); for (int i = 1; i <= n; i++) { ans[i] = 0; rep(j, ds[i].size()) { ll d = ds[i][j]; (ans[i] += f[d] * way[i / d]) %= mod; } } for (int i = 1; i <= n; i++) { if (i != 1) printf(" "); printf("%lld", ans[i]); } cout << endl; } int main() { precalc(); int T; cin >> T; while (T--) solve(); return 0; }