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>).

mod= 10**9 +7

def multiply(a,b):
    res=[]
    for i in range(len(a)):
        ans=0
        for j in range (0,i+1):
            ans+=a[j]*b[i-j]
        res.append(ans%mod)
    return res


def compute_pow_k(b,k):
    if(k==1): return b
    if(k==2):
        return multiply(b,b)

    if(k%2==0):
        a=compute_pow_k(b, k//2)
        return multiply(a,a)
    else:
        a=compute_pow_k(b, k//2)
        temp=multiply(a,a)
        return multiply(temp,b)


n, k= map(int, input().split())
a = list(map(int, input().split()))


def partial_sum(a,k,n):
    if(k==0): return a
    b=[1 for i in range(n)]
    b_k= compute_pow_k(b,k)
    return multiply(a,b)


answer= partial_sum(a,k,n)
print(' '.join(map(str, answer)))