#include using namespace std; typedef long long ll; #define MOD 1000000007 #define MAX_N 100000 #define MAX_P 200005 ll fact[MAX_P]; ll fact_i[MAX_P]; ll extgcd(ll a,ll b,ll& x,ll& y){ ll d=a; if(b!=0){ d=extgcd(b,a%b,y,x); y-=(a/b)*x; }else{ x=1;y=0; } return d; } ll mod_inverse(ll a,ll m){ if(a==0) return 1; ll x,y; extgcd(a,m,x,y); return (m+x%m)%m; } ll euler_phi(ll n){ ll res=n; for(ll i=2;i*i<=n;i++){ if(n%i==0){ res=res/i*(i-1); for(;n%i==0;n/=i); } } if(n!=1) res=res/n*(n-1); return res; } ll euler[MAX_N]; void euler_phi2(){ for(ll i=0;i0){ if(n&1) res=res*x%mod; x=x*x%mod; n>>=1; } return res; } void init(ll p){ fact[0]=1; for(ll i=1;ie2+e3) return 0; return a1*mod_inverse(a2*a3%p,p)%p; } ll dp[1250][1250]; ll n,m[1250]; ll dfs(ll pos,ll len){ //cout<=n||m[pos+i-1]>m[pos+i]) break; } //cout<>n; for(ll i=0;i>m[i]; init(MOD); memset(dp,-1,sizeof(dp)); cout<