#include using namespace std; const int mod=1000000007; typedef long long ll; int n,a[200005]; ll jc[200005],iv[200005],B; void init(){ jc[0]=iv[0]=jc[1]=iv[1]=1; for(int i=2;i<=200000;++i){ jc[i]=jc[i-1]*i%mod; iv[i]=(mod-mod/i)*iv[mod%i]%mod; } for(int i=1;i<=200000;++i)iv[i]=iv[i-1]*iv[i]%mod; } ll C(int n,int m){ if(m<0||m>n)return 0; return jc[n]*iv[m]%mod*iv[n-m]%mod; } int c[200005],m; int main(){ init(); scanf("%d%lld",&n,&B); for(int i=1;i<=n;++i)scanf("%d",&a[i]); sort(a+1,a+1+n);a[0]=-1; for(int i=1;i<=n;++i){ if(a[i]!=a[i-1]){ m++; c[m]=1; } else c[m]++; } ll f=B*jc[c[m]]%mod,g=B*jc[c[m]]%mod; ll d=c[m]; for(int i=m-1;i>=1;--i){ g=(B*jc[c[i]]%mod*C(d+c[i]-1,c[i]-1)%mod*(f+g)%mod+jc[c[i]]*C(d+c[i]-1,c[i])%mod*g%mod)%mod; f=(B*jc[c[i]]%mod*C(d+c[i]-1,c[i]-1)%mod*f%mod+jc[c[i]]*C(d+c[i]-1,c[i])%mod*f%mod)%mod; d+=c[i]; } printf("%lld",g); return 0; }