#include <bits/stdc++.h>
using namespace std;
long long int modulo = 1000000007;
long long int eleva(long long int b, long long int e) {
  if (e == 0) return 1;
  if (e % 2 == 0) return eleva(b * b % modulo, e / 2);
  return b * eleva(b * b % modulo, e / 2) % modulo;
}
long long int a[1000000];
int main() {
  ios::sync_with_stdio(false);
  long long int n, x;
  cin >> n >> x;
  long long int s = 0;
  long long int maxim = 0;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    s += a[i];
    maxim = max(maxim, a[i]);
  }
  map<long long int, long long int> veces;
  for (int i = 0; i < n; i++) veces[maxim - a[i]]++;
  for (;;) {
    map<long long int, long long int>::iterator it = veces.begin();
    long long int aa = it->first;
    long long int vec = it->second;
    if (vec % x != 0) break;
    long long int anyade = vec / x;
    veces.erase(it);
    veces[aa + 1] += anyade;
  }
  map<long long int, long long int>::iterator it = veces.begin();
  long long int minimo = it->first;
  long long int e = s - maxim + min(minimo, maxim);
  cout << eleva(x, e) << endl;
}
