ll@N,@K,@A[N]; if (K <= 1d6) { Mint F[K]; rep(i,N)F[i]=A[i]; Mint w = SUM(F(N)); Mint ans = w; rep(i,N,K) { F[i]=w; w -= F[i-N]; w += F[i]; ans += F[i]; } wt(F[K-1],ans); } else { Matrix M(N+1, N+1); Mint T[N+1]; T[0] = SUM(A(N)); rep(i, 1, N + 1) T[i] = A[N-i]; rep(i,N+1)M[0][i]=1; rep(i,1,N+1)M[1][i]=1; rep(i,2,N+1)M[i][i-1]=1; M = M ** (K-N); Mint sm = 0; rep(i,N+1)sm+=M[0][i]*T[i]; Mint ans = 0; rep(i,N+1)ans+=M[1][i]*T[i]; wt(ans,sm); }