#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:102400000,102400000")
using namespace std;
const int INF = 0x3f3f3f3f;
const long long INFF = 0x3f3f;
const double pi = acos(-1.0);
const double eps = 1e-8;
const long long mod = 1e9 + 7;
const unsigned long long mx = 133333331;
inline void RI(int &x) {
  char c;
  while ((c = getchar()) < '0' || c > '9')
    ;
  x = c - '0';
  while ((c = getchar()) >= '0' && c <= '9') x = (x << 3) + (x << 1) + c - '0';
}
long long a[100005];
char s[100];
long long labs(long long a) {
  if (a < 0) return -a;
  return a;
}
int main() {
  int n, k;
  while (cin >> n >> k) {
    int f = 0;
    for (int i = 0; i <= n; i++) {
      scanf("%s", s);
      if (s[0] == '?')
        a[i] = INF, f++;
      else {
        int flag = 1;
        int j = 0;
        if (s[0] == '-') flag = -1, j++;
        int len = strlen(s);
        a[i] = 0;
        for (; j < len; j++) {
          a[i] = a[i] * 10 + (s[j] - '0');
        }
        a[i] = a[i] * flag;
      }
    }
    if (k == 0) {
      if (a[0] == 0)
        printf("Yes\n");
      else if (a[0] != INF) {
        printf("No\n");
      } else {
        if ((n + 1 - f) & 1)
          printf("Yes\n");
        else
          printf("No\n");
      }
      continue;
    }
    if (f) {
      if ((n + 1) % 2 == 0)
        printf("Yes\n");
      else
        printf("No\n");
    } else {
      long long ans = a[n];
      for (int i = n - 1; i >= 0; i--) {
        ans = ans * k + a[i];
        if (labs(ans) > 1e14) break;
      }
      if (ans == 0)
        printf("Yes\n");
      else
        printf("No\n");
    }
  }
  return 0;
}
