func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = 2e3 + 10;   const int MOD = 1e9 + 7;   long long bit[maxn], n, k;   long long sum(int i) {     long long s = 0;     while (i > 0) {       s += bit[i];       s %= MOD;       i -= i & -i;     }     return s;   }   void add(int i, long long x) {     while (i <= n) {       bit[i] += x;       bit[i] %= MOD;       i += i & -i;     }   }   long long dp[maxn];   long long a[maxn];   long long quick_mod(long long a, long long b) {     long long ans = 1;     a %= MOD;     while (b) {       if (b & 1) {         ans = ans * a % MOD;         b--;       }       b >>= 1;       a = a * a % MOD;     }     return ans;   }   long long C(long long n, long long m) {     if (m > n) return 0;     long long ans = 1;     for (int i = 1; i <= m; i++) {       long long a = (n + i - m) % MOD;       long long b = i % MOD;       ans = ans * (a * quick_mod(b, MOD - 2) % MOD) % MOD;     }     return ans;   }   long long Lucas(long long n, long long m) {     if (m == 0) return 1;     return C(n % MOD, m % MOD) * Lucas(n / MOD, m / MOD) % MOD;   }   long long combine[maxn];   void init_combine() {     for (int i = 1; i <= n; i++) combine[i] = Lucas(k + i - 1, i);   }   int main() {     ios::sync_with_stdio(false);     cin.tie(0);     cin >> n >> k;     for (int i = 1; i <= n; i++) {       cin >> a[i];     }     dp[1] = a[1];     init_combine();     for (int i = 2; i <= n; i++) {       dp[i] = a[i];       for (int j = 1; j <= i - 1; j++) {         dp[i] += (combine[j] * a[i - j]) % MOD;         dp[i] %= MOD;       }     }     for (int i = 1; i <= n; i++) cout << dp[i] <<    ;     cout << endl;     return 0;   }   