You've got an array *a*, consisting of *n* integers. The array elements are indexed from 1 to *n*. Let's determine a two step operation like that:
 1.  First we build by the array *a* an array *s* of partial sums, consisting of *n* elements. Element number *i* (1 ≤ *i* ≤ *n*) of array *s* equals <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/cdc22b6f0de971f5a4a64b6f9e22d76a719ec5b7.png" style="max-width: 100.0%;max-height: 100.0%;"/>. The operation *x* *mod* *y* means that we take the remainder of the division of number *x* by number *y*. 1.  Then we write the contents of the array *s* to the array *a*. Element number *i* (1 ≤ *i* ≤ *n*) of the array *s* becomes the *i*-th element of the array *a* (*a*<sub class="lower-index">*i*</sub> = *s*<sub class="lower-index">*i*</sub>). 
You task is to find array *a* after exactly *k* described operations are applied.
The first line contains two space-separated integers *n* and *k* (1 ≤ *n* ≤ 2000, 0 ≤ *k* ≤ 10<sup class="upper-index">9</sup>). The next line contains *n* space-separated integers *a*<sub class="lower-index">1</sub>, *a*<sub class="lower-index">2</sub>, ..., *a*<sub class="lower-index">*n*</sub> — elements of the array *a* (0 ≤ *a*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">9</sup>).
def inv_table(n,mod):
  inv=[1]*(n+1)
  for i in range(2,n+1):
    inv[i]=-inv[mod%i]*(mod//i)%mod
  return inv

def negative_binom(n,r,d,mod):
  # (1-rx)^(-d) を第 n 項まで求める
  a=[0]*(n+1)
  a[0]=1
  inv=inv_table(n,mod)
  res=1
  for i in range(1,n+1):
    res*=(i-1+d)
    res%=mod
    res*=inv[i]
    res%=mod
    a[i]=res
  return a

n,k=map(int,input().split())
mod=10**9+7

a=list(map(int,input().split()))
b=negative_binom(n,1,k,mod)

ans=[0]*n
for i in range(n):
  for j in range(n):
    if i+j<n:
      ans[i+j]+=a[i]*b[j]
      ans[i+j]%=mod

print(*ans)
