#include <bits/stdc++.h>
using namespace std;
const int oo = 0x3f3f3f3f;
const double eps = 1e-9;
int n, k;
vector<vector<unsigned long long> > multiply(
    vector<vector<unsigned long long> > &a,
    vector<vector<unsigned long long> > &b) {
  vector<vector<unsigned long long> > ret(int((a).size()));
  for (int i = (0); i < (int((a).size())); i++) {
    ret[i].resize(int((b[0]).size()));
    for (int j = (i); j < (int((b[0]).size())); j++) {
      unsigned long long s = 0;
      for (int k = (0); k < (int((a[0]).size())); k++)
        s = (s + a[i][k] * b[k][j]) % 1000000007;
      ret[i][j] = s;
    }
  }
  return ret;
}
vector<vector<unsigned long long> > multiply2(
    vector<vector<unsigned long long> > &a,
    vector<vector<unsigned long long> > &b) {
  vector<vector<unsigned long long> > ret(int((a).size()));
  ret[0].resize(int((b[0]).size()));
  for (int j = (0); j < (int((b[0]).size())); j++) {
    unsigned long long s = 0;
    for (int k = (0); k < (j + 1); k++)
      s = (s + a[0][k] * b[0][j - k]) % 1000000007;
    ret[0][j] = s;
  }
  return ret;
}
vector<vector<unsigned long long> > fastExp(
    vector<vector<unsigned long long> > &a, int n) {
  if (n == 1) return a;
  if (n % 2) {
    vector<vector<unsigned long long> > tmp = fastExp(a, n - 1);
    return multiply2(a, tmp);
  }
  vector<vector<unsigned long long> > ret(fastExp(a, n / 2));
  return multiply2(ret, ret);
}
int main() {
  cin >> n >> k;
  vector<vector<unsigned long long> > tmp(n);
  for (int i = (0); i < (n); i++) {
    tmp[i].resize(n);
    for (int j = (i); j < (n); j++) tmp[i][j] = 1;
  }
  if (k != 0) tmp = fastExp(tmp, k);
  for (int i = (1); i < (n); i++)
    for (int j = (i); j < (n); j++) tmp[i][j] = tmp[0][j - i];
  vector<vector<unsigned long long> > in(1);
  in[0].resize(n);
  for (int i = (0); i < (n); i++) cin >> in[0][i];
  if (k != 0)
    tmp = multiply(in, tmp);
  else
    tmp = in;
  for (int i = (0); i < (n); i++) {
    if (i != 0) cout << " ";
    cout << tmp[0][i] % 1000000007;
  }
  cout << endl;
  return 0;
}
