#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; typedef long long int ll; typedef pair P; const ll MOD=1e9+7; vector> matrixmul(int l, int m, int n, vector> a, vector> b){ vector> c; for(int i=0; i v; for(int j=0; j> matrixpow(int n, vector> a, ll k){ vector> ap=a, ans; for(int i=0; i v; for(int j=0; j>=1; } return ans; } int main() { int n; ll k; cin>>n>>k; ll a[10010]; for(int i=0; i>a[i]; if(n>30){ ll f[1000010], s[1000010]; s[0]=0; for(int i=1; i<=n; i++) f[i]=a[i-1], s[i]=(s[i-1]+f[i])%MOD; for(int i=n+1; i<=k; i++){ f[i]=(s[i-1]-s[i-n-1]+MOD)%MOD; s[i]=(s[i-1]+f[i])%MOD; } cout<> mat(n+1, vector(n+1)); for(int i=0; i> matp=matrixpow(n+1, mat, k-1); a[n]=a[0]; ll fk=0, sk=0; for(int i=0; i