func_code_string: #include <bits/stdc++.h>   using namespace std;   int n;   long long p;   long long a[1000005];   long long fastpow(long long a, int x) {     if (x < 0) return 1;     if (x == 0) return 1;     if (x == 1) return a;     long long tmp = fastpow(a, x >> 1);     tmp = (tmp * tmp) % 1000000007ll;     if (x & 1) {       tmp = (tmp * a) % 1000000007ll;     }     return tmp;   }   void solve() {     scanf( %d%lld , &n, &p);     for (int i = 0; i < n; i++) {       scanf( %lld , a + i);     }     if (p == 1) {       printf( %d n , n % 2);       return;     }     sort(a, a + n);     long long ans = 0;     long long res = 0;     int last = 0;     for (int i = n - 1; i >= 0; i--) {       if (i != n - 1) {         ans *= fastpow(p, last - a[i]);         ans %= 1000000007ll;       }       if (i != n - 1 && res <= 1e6 + 100) {         for (int j = 0; j < 20 && j < last - a[i]; j++) {           res *= p;           if (res > 1e6 + 100) {             res = 1e18;             break;           }         }       }       if (res == 0) {         ans++;         res++;       } else {         ans += 1000000007ll - 1;         res--;       }       ans %= 1000000007ll;       last = a[i];     }     ans *= fastpow(p, last);     printf( %lld n , ans % 1000000007ll);   }   int main() {     ios_base::sync_with_stdio(false);     int T;     scanf( %d , &T);     while (T--) {       solve();     }     return 0;   }   