#include <bits/stdc++.h>
using namespace std;
const int maxn = 100008;
const int INF = 1000000000;
int a[maxn];
int fb(int x) {
  if (x < 0) return -x;
  return x;
}
int main() {
  int i, n, k, j;
  char s[108];
  while (scanf("%d%d", &n, &k) == 2) {
    int cnt = 0;
    for (i = 0; i <= n; i++) {
      scanf("%s", s);
      if (s[0] == '?') {
        a[i] = INF;
        cnt++;
      } else {
        int tmp = 0;
        if (s[0] != '-') {
          for (j = 0; s[j] != '\0'; j++) tmp = tmp * 10 + s[j] - '0';
          a[i] = tmp;
        } else {
          for (j = 1; s[j] != '\0'; j++) {
            tmp = tmp * 10 + s[j] - '0';
          }
          a[i] = -tmp;
        }
      }
    }
    if (k == 0) {
      if (a[0] == 0)
        printf("Yes\n");
      else if (a[0] != INF)
        printf("No\n");
      else {
        if (n + 1 - cnt & 1)
          printf("Yes\n");
        else
          printf("No\n");
      }
      continue;
    }
    if (cnt) {
      if (n & 1)
        printf("Yes\n");
      else
        printf("No\n");
      continue;
    } else {
      for (i = 1; i <= 50; i++) {
        int shit = rand() % 10000 * rand();
        int mod = fb(shit - k);
        long long tmp = 0;
        for (j = n; j >= 0; j--) {
          tmp = (tmp * shit + a[j]) % mod;
        }
        if (tmp != 0) break;
      }
      if (i > 50)
        printf("Yes\n");
      else
        printf("No\n");
    }
  }
  return 0;
}
