#include <bits/stdc++.h>
const int maxn = 1e5 + 5;
using namespace std;
long long quickpow(long long a, long long b) {
  long long ans = 1;
  while (b) {
    if (b & 1) ans = (ans * a) % 1000000007;
    b >>= 1;
    a = (a * a) % 1000000007;
  }
  return ans;
}
long long a[maxn];
int main() {
  long long n, x;
  cin >> n >> x;
  long long s = 0;
  for (int t = 0; t < n; t++) {
    scanf("%lld", &a[t]);
    s += a[t];
  }
  for (int t = 0; t < n; t++) {
    a[t] = s - a[t];
  }
  long long ans, cnt = 1;
  sort(a, a + n);
  a[n] = -1;
  for (int t = 1; t <= n; t++) {
    if (a[t] != a[t - 1]) {
      if (cnt % x) {
        ans = a[t - 1];
        break;
      } else {
        cnt /= x;
        a[t - 1]++;
        t--;
      }
    } else {
      cnt++;
    }
  }
  long long ss = min(s, ans);
  cout << quickpow(x, ss) << endl;
  return 0;
}
