func_code_string: #include <bits/stdc++.h>   using namespace std;   const int base = 1e9;   const int maxn = 1e3;   const int logn = 20;   const int inf = 2e9;   const int alpha = 26;   const int my_hash = 29;   const long long l_inf = 4e18;   const long long mod = 1e9 + 7;   const double pi = acos(-1.0);   const double eps = 1e-9;   int n;   long long x, sum = 0;   vector<long long> a, b;   long long binpow(long long a, long long b) {     if (!b) return 1;     if (b % 2) return (binpow(a, b - 1) * a) % mod;     long long k = binpow(a, b / 2);     return (k * k) % mod;   }   int main() {     ios_base::sync_with_stdio();     cin >> n >> x;     a = vector<long long>(n);     for (int i = int(0); i < int(n); i++) {       cin >> a[i];       sum += a[i];     }     for (int i = int(0); i < int(n); i++) b.push_back(sum - a[i]);     sort(b.rbegin(), b.rend());     while (true) {       long long cnt = 0, v = b.back();       while (!b.empty() && b.back() == v) {         cnt++;         b.pop_back();       }       if (cnt % x) {         cout << binpow(x, min(v, sum));         exit(0);       } else {         cnt /= x;         for (int i = int(0); i < int(cnt); i++) b.push_back(v + 1);       }     }   }   