#ifndef INCLUDED_MAIN #define INCLUDED_MAIN #include __FILE__ int main(){ ll n,k; cin>>n>>k; vl a(n); rep(i,n) cin>>a[i]; ll all_prod=1; rep(i,n) { all_prod*=a[i]; all_prod%=mod; } ll pdinv=modinv(all_prod,mod); auto funk=[&](ll f) { ll res=1; rep(i,n) { res*=(min(f,a[i])); res%=mod; } res*=pdinv; res%=mod; return res; }; ll ans=funk(k)-funk(k-1); if(ans<0) ans+=mod; cout< #include using namespace std; #define rep(i,n) for(ll i=0;i #define vc vector ll op(ll a,ll b) {return a+b;} ll e() {return 0ll;} template bool chmin(T& a, T b){if(a > b){a = b; return true;} return false;} template bool chmax(T& a, T b){if(a < b){a = b; return true;} return false;} void no() { cout<<"No"<& a) { ll ans=0; for(auto i:a) ans+=i; return ans; } ll modpow(ll fl, ll po, ll mode) { // mode: 0=modなし, 1=modあり ll ret=1; if (mode) { while (po>0) { if (po&1) ret=(ret*fl)%mod; fl=(fl*fl)%mod; po>>=1; } } else { while (po>0) { if(po&1) ret*=fl; fl*=fl; po>>=1; } } return ret; } ll modinv(ll a, ll mod) { //拡張Euclidによるmodでの逆元, a*u+mod*v=1を解く ll b=mod,u=1,v=0; while (b) { ll t=a/b; a-=t*b; swap(a,b); u-=t*v; swap(u,v); } u%=mod; if (u < 0) u+=mod; return u; } #endif