#include using namespace std; typedef long long LL; const int N=400010,mod=1000000007; const LL inf=2000000000000000000ll; LL mem[N],jiec[N],K; int n,arr[N],ans; void next_per() { for(int i=n-1;i>=1;--i) { if(arr[i]arr[i]) { swap(arr[j],arr[i]); return ; } } return ; } } reverse(arr+1,arr+n+1); } int inc(int x) { return x>=mod ? x-mod : x; } struct BIT_tree { int Val[N]; inline int lowbit(int x) { return x & (-x); } void change(int x,int v) { while(x=inf) { jiec[i]=inf; maxi=i; break; } jiec[i]=P; } mem[2]=1; for(int i=3;i<=maxi;++i) { mem[i]=(LL)(mem[i-1]+((__int128)jiec[i-1]*(i-1)/2)%mod)*i%mod; } // for(int i=1;i<=maxi;++i) // { // cout<>n>>K; for(int i=1;i<=n;++i) cin>>arr[i]; while(K) { int maxlth=0; for(int i=1;i<=maxi;++i) { if(K>=jiec[i]) maxlth=i; else break; } for(int i=n-1;i>=0;--i) { if(i==0) { maxlth=min(maxlth,n); break; } if(arr[i]>arr[i+1]) { maxlth=min(maxlth,n-i); break; } } // cerr<=jiec[maxlth]&&maxlth==n) { LL P=(K/jiec[maxlth])%mod; // cerr<<"P:"<