#include using namespace std; #pragma GCC target("avx") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #define rep(i,n) for(int i=0; i<(int) (n); i++) const long long mod = 1000000007; vector> mul(vector>& xx, vector>& yy) { int a = xx.size(), b = yy[0].size(), c = yy.size(); vector> ans(a, vector(b)); rep(i, a) { rep(j, b) { rep(k, c) { ans[i][j] += (long long)xx[i][k] * (long long)yy[k][j] % mod; if (mod <= ans[i][j])ans[i][j] -= mod; } } } return ans; } signed main() { int N, K, L; cin >> N >> K >> L; vector>path(N, vector(N)), dp(N, vector(N)); rep(i, N) { for (int j = 1; j <= L; j++) { path[i][(i + j) % N] = 1; } } rep(i, N) { dp[i][i] = 1; } for (; K; K >>= 1) { if (K & 1) { dp= mul(dp, path); } path = mul(path, path); } rep(i,N){ cout<