#include <bits/stdc++.h>
using namespace std;
int toInt(string s) {
  istringstream sin(s);
  int t;
  sin >> t;
  return t;
}
template <class T>
string toString(T x) {
  ostringstream sout;
  sout << x;
  return sout.str();
}
template <class T>
void chmin(T &t, T f) {
  if (t > f) t = f;
}
template <class T>
void chmax(T &t, T f) {
  if (t < f) t = f;
}
int main() {
  int n, k;
  int a[2010];
  int i, j;
  cin >> n >> k;
  vector<int> b(n, -1), p(n, 1);
  int m = k;
  while (m) {
    if (m & 1) {
      if (b[0] == -1)
        b = p;
      else {
        vector<int> tmp(n);
        for (i = (0); i < (n); i++) {
          long long t = 0;
          for (j = (0); j < (i + 1); j++) {
            t += 1ll * b[j] * p[i - j];
            t %= 1000000007;
          }
          tmp[i] = (int)t;
        }
        b = tmp;
      }
    }
    for (i = (0); i < (n); i++) {
      vector<int> tmp(n);
      for (i = (0); i < (n); i++) {
        long long t = 0;
        for (j = (0); j < (i + 1); j++) {
          t += 1ll * p[j] * p[i - j];
          t %= 1000000007;
        }
        tmp[i] = (int)t;
      }
      p = tmp;
    }
    m >>= 1;
  }
  for (i = (0); i < (n); i++) cin >> a[i];
  if (k == 0) {
    for (i = (0); i < (n); i++) cout << a[i] << " ";
    cout << endl;
  } else {
    for (i = (0); i < (n); i++) {
      long long t = 0;
      for (j = (0); j < (i + 1); j++) {
        t += 1ll * b[j] * a[i - j];
        t %= 1000000007;
      }
      cout << t << " ";
    }
    cout << endl;
  }
  return 0;
}
