#include #include #include #include #include #include #include #include #include #include #include #include #define vll vector #define vvvl vector #define vvl vector> #define VV(a, b, c, d) vector>(a, vector(b, c)) #define VVV(a, b, c, d) vector(a, vvl(b, vll (c, d))); #define re(c, b) for(ll c=0;c fac(N_MAX+1); vector finv(N_MAX+1); vector inv(N_MAX+1); ll comb(ll n, ll k){ if(n<0||k<0||n0){ if(b%2) ret *= num; num = num * num; b /= 2; } }else{ while(b>0){ if(b%2) ret = (ret*num)%p; num = (num*num)%p; b /= 2; } } return ret; } int main() { init(); ll n, k;std::cin >> n >> k; vll a(n);get(a); ll ans = 0; vll lc(n, 0), rc(n, 0); lc[0] = 1; rc[n-1] = 1; for(ll i=1;i=0;i--){ ll pre = rc[i+1]; pre = pp(pre, n-1-i + k); pre = pp(pre, inv[n-1-i]); rc[i] = pre; } for(int i=0;i