#include using lint=long long; using real=long double; lint mod=1'000'000'007; lint inverse(lint x){ lint y=1,u=mod,v=0; while(x){ lint q=u/x; u-=q*x;std::swap(x,u); v-=q*y;std::swap(y,v); } assert(x==0&&std::abs(y)==mod&&std::abs(u)==1&&std::abs(v)>n; std::vectora(n),fact(n+1),finv(n+1); for(lint&x:a)std::cin>>x; fact.at(0)=1; for(lint i=1;i<=n;i++)fact.at(i)=fact.at(i-1)*i%mod; finv.at(n)=inverse(fact.at(n)); for(lint i=n;i>=1;i--)finv.at(i-1)=finv.at(i)*i%mod; assert(finv.at(0)==1); lint ans=0; for(lint i=0;i