#include <bits/stdc++.h>
using namespace std;
long long p = 1000000007ll, x;
long long binpow(long long v) {
  if (v == 0ll) return 1ll;
  if (v == 1ll) return x;
  if (v % 2ll == 0ll)
    return ((binpow(v / 2ll) % p) * (binpow(v / 2ll) % p)) % p;
  return (binpow(v - 1ll) * x) % p;
}
long long s = 0ll, a[111111], y[111111], S = 0ll, Y, z = 0;
int n;
int main() {
  cin >> n >> x;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    s += a[i];
  }
  for (int i = 0; i < n; i++) y[i] = s - a[i];
  Y = y[n - 1];
  for (int i = 0; i < n; i++) y[i] -= Y;
  if (a[n - 1] == 0 || n == 1) {
    cout << "1";
    return 0;
  }
  Y = binpow(Y);
  for (int i = 0; i < n; i++)
    if (!y[i]) S++;
  if (S % x) {
    cout << Y;
    return 0;
  }
  Y = (Y * x) % p;
  a[n - 1]--;
  if (!a[n - 1]) {
    cout << Y;
    return 0;
  }
  for (int i = 0; i < n; i++)
    if (!(y[i] - 1)) {
      z++;
    }
  int w = 2;
  while (S % x == 0 && a[n - 1]) {
    S /= x;
    S += z;
    z = 0;
    for (int i = 0; i < n; i++)
      if (y[i] - w == 0) z++;
    if (S % x == 0) w++, Y = (Y * x) % p, a[n - 1]--;
  }
  cout << Y % p;
  return 0;
}
