#include <bits/stdc++.h>
using namespace std;
const long long MX = 1e16 + 1;
vector<long long> v[101];
long long descBaseK(long long a, long long k) {
  long long ind = lower_bound(v[k].begin(), v[k].end(), a) - v[k].begin();
  if (ind == v[k].size()) {
    ind--;
    return ind;
  }
  if (v[k][ind] == a) {
    return ind;
  }
  ind--;
  return ind;
}
void solve() {
  long long n, k;
  cin >> n >> k;
  bool seUso[100];
  fill(seUso, seUso + 100, false);
  bool sePuede = true;
  for (long long i = 0; i < (long long)n; i++) {
    long long a;
    cin >> a;
    while (a > 0 && sePuede) {
      long long expK = descBaseK(a, k);
      if (seUso[expK]) {
        sePuede = false;
      }
      seUso[expK] = true;
      a -= v[k][expK];
    }
  }
  if (sePuede) {
    cout << "YES\n";
  } else {
    cout << "NO\n";
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  for (long long k = 2; k < 101; k++) {
    long long j = 1;
    while (j <= MX) {
      v[k].push_back(j);
      j *= k;
    }
  }
  int t;
  cin >> t;
  while (t--) {
    solve();
  }
  return 0;
}
