第五个点RE了
#include<bits/stdc++.h>
#define Mod 1000000007
using namespace std;
long long n,x;
long long a[10005];
long long now=0,head=1;
long long deal(){
long long re=a[head]-now;
// cout<<"# "<<re<<endl;
now=a[head];
long long cnt=0;
while(now>=a[head]&&head<=n){
cnt++;
head++;
}
// cout<<cnt<<" "<<head<<endl;
// cout<<cnt<<endl;
long long maxc=0;
while(cnt%x==0&&cnt>0){
maxc++;
cnt/=x;
}
for(int i=1;i<=cnt;i++){
head--;
a[head]=maxc+now;
}
sort(a+head,a+n+1);
return re;
}
long long fpow(long long u,long long v){
long long tot=1;
while(v){
if(v&1){
tot*=u;
tot%=Mod;
}
u*=u;
u%=Mod;
v>>=1;
}
return tot%Mod;
}
int main(){
cin>>n>>x;
long long maxn=0;
for(int i=1;i<=n;i++){
cin>>a[i];
maxn+=a[i];
}
for(int i=1;i<=n;i++){
a[i]=maxn-a[i];
}
sort(a+1,a+n+1);
// for(int i=1;i<=n;i++){
// cout<<a[i]<<" ";
// }
// cout<<endl;
while(a[head]==0&&head<=n)head++;
long long ans=0;
while(1){
long long rec=deal();
if(rec==0)break;
ans+=rec;
// cout<<"@ : "<<ans<<" "<<rec<<" "<<head<<endl;
// for(int i=1;i<=n;i++){
// cout<<a[i]<<" ";
// }
// cout<<endl;
}
cout<<fpow(x,ans)<<endl;
}