#include <bits/stdc++.h>
using namespace std;
long long mod;
long long put(int n, int p);
vector<int> v;
int parsare(string s);
int k;
int main() {
  int n, ramase = 0;
  cin >> n >> k;
  string s;
  string s0;
  for (int i = 0; i <= n; i++) {
    cin >> s;
    if (i == 0) s0 = s;
    if (s[0] == '?')
      ramase++;
    else
      v.push_back(parsare(s));
  }
  if (k == 0) {
    if (s0 == "0")
      cout << "Yes";
    else if (s0 == "?" && ((n + 1 - ramase) & 1))
      cout << "Yes";
    else
      cout << "No";
    return 0;
  }
  if (ramase != 0) {
    if (!((n + 1) & 1)) {
      cout << "Yes";
    } else {
      cout << "No";
    }
    return 0;
  }
  bool mere = 1;
  long long prm[9] = {64661, 64663, 64667, 64679,     64693,
                      87697, 87701, 87719, 1000000007};
  for (int i = 0; i < 9; i++) {
    mod = prm[i];
    long long x = 0;
    for (int i = 0; i < v.size(); i++) {
      x += 1ll * (v[i] % mod + mod) % mod * put(k, i);
      x = 1ll * x % mod;
    }
    if (x != 0) mere = 0;
  }
  if (mere) {
    cout << "Yes";
  } else
    cout << "No";
  return 0;
}
long long put(int n, int p) {
  if (p == 0) return 1;
  long long a = put(n, p / 2);
  a *= a;
  a %= mod;
  if (p & 1) a *= n;
  return (a % mod);
}
int parsare(string s) {
  int semn = 1, x = 0;
  int i = 0;
  if (s[0] == '-') {
    semn = -1;
    i = 1;
  }
  while (i < s.size()) {
    x *= 10;
    x += s[i] - '0';
    i++;
  }
  return semn * x;
}
