#include <bits/stdc++.h>   using namespace std;   long long inv[500005];   void getinv() {     inv[0] = inv[1] = 1;     for (int i = 2; i < 500005; i++)       inv[i] =           ((-1000000007 / i * inv[1000000007 % i]) % 1000000007 + 1000000007) %           1000000007;   }   long long slove(int n, int m) {     long long ans = 1;     for (int i = 1; i <= m; i++)       ans = ((ans * inv[i]) % 1000000007 * (n - i + 1)) % 1000000007;     return ans;   }   long long a[500005], n, m, c[500005];   int main() {     scanf( %I64d%I64d , &n, &m);     for (int i = 0; i < n; i++) {       scanf( %I64d , &a[i]);     }     getinv();     for (int i = 0; i <= n; i++) {       c[i] = slove(i + m - 1, i);     }     for (int i = 0; i < n; i++) {       long long ans = 0;       for (int j = 0; j <= i; j++) {         ans = (ans + a[j] * c[i - j]) % 1000000007;       }       printf( %I64d  , ans);     }     return 0;   }   