#include <bits/stdc++.h>
using namespace std;
using LL = long long;
using DD = long double;
using pii = pair<int, int>;
const LL INFLL = 0x7f7f7f7f7f7f7f7fLL;
const int INFint = 0x7f7f7f7f;
LL evalpoly(vector<int> &coeffs, LL k, LL mod) {
  LL rr = 0;
  LL xp = 1;
  k = (k + mod) % mod;
  for (int i = 0; i < int((int((coeffs).size()))); ++i) {
    rr += ((mod + LL(coeffs[i])) % mod) * xp;
    rr %= mod;
    xp = (xp * k) % mod;
  }
  return rr;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.precision(16);
  int n, k;
  cin >> n >> k;
  int questions = 0;
  vector<int> coeffs;
  bool first_question = false;
  for (int i = 0; i < int(n + 1); ++i) {
    string token;
    cin >> token;
    if (token == "?") {
      ++questions;
      if (i == 0) first_question = true;
    } else {
      stringstream st(token);
      int c;
      st >> c;
      coeffs.push_back(c);
    }
  }
  bool rr = false;
  bool human_turn = (n + 1 - questions) % 2 == 1;
  if (k == 0) {
    if (first_question)
      rr = human_turn;
    else
      rr = (coeffs[0] == 0);
  } else {
    if (questions != 0) {
      rr = ((n + 1) % 2 == 0);
    } else {
      rr = evalpoly(coeffs, k, 999119999) == 0LL &&
           evalpoly(coeffs, k, 1000000007) == 0LL &&
           evalpoly(coeffs, k, 1234567891) == 0LL &&
           evalpoly(coeffs, k, 7) == 0LL && evalpoly(coeffs, k, 97) == 0LL &&
           evalpoly(coeffs, k, 787) == 0LL && evalpoly(coeffs, k, 997) == 0LL;
    }
  }
  printf("%s\n", rr ? "Yes" : "No");
  return 0;
}
