func_code_string: #include <bits/stdc++.h>   using namespace std;   long long b[1510100], n, x;   long long Mod, C;   long long power(long long a, long long n, long long mod) {     if (n == 0) return 1;     long long y;     y = power(a, n / 2, mod);     if (n & 1) {       return (((y * y) % mod) * a) % mod;     } else {       return (y * y) % mod;     }   }   bool func(int mid) {     int i, j, k;     long long EX, sum;     EX = power(x, mid, Mod);     sum = 0;     for (i = 0; i < n; i++) {       if (b[i] >= mid)         break;       else {         sum += power(x, b[i], EX);         sum %= EX;       }     }     if (sum == 0)       return true;     else       return false;   }   int main() {     int i, j, k;     scanf( %d , &n);     scanf( %d , &x);     long long mx, quan;     mx = 0;     quan = 0;     int a[n];     for (i = 0; i < n; i++) {       scanf( %d , &a[i]);       mx = max(mx, (long long)a[i]);       quan += a[i];     }     quan = quan - mx;     for (i = 0; i < n; i++) {       b[i] = mx - a[i];     }     sort(b, b + n);     int hi, lo, mid;     hi = mx;     lo = 0;     Mod = 1000000007;     while (hi != lo) {       mid = (hi + lo + 1) / 2;       if (func(mid)) {         lo = mid;       } else {         hi = mid - 1;       }     }     quan += hi;     cout << power(x, quan, Mod);   }   