#include <bits/stdc++.h>
using namespace std;
long long n, m, a[11000], c[11000], r[100], p[100], phi[100], P;
int pr[1000000], pl, K, num;
bool b[1000000], v[100];
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
void get_p() {
  for (int i = 2; i < 1000000; i++) {
    if (b[i] == 0) pr[++pl] = i;
    for (int j = 1; j <= pl; j++) {
      if (i * pr[j] >= 1000000) break;
      b[i * pr[j]] = 1;
      if (i % pr[j] == 0) break;
    }
  }
}
bool solve(long long pr, int k) {
  for (int i = 1; i <= 50; i++) v[i] = 0;
  int mx = 0;
  for (int i = 1; i <= K; i++) {
    if (c[i] % pr) continue;
    int t = 0;
    long long d = 1;
    while ((c[i] / d) % pr == 0) {
      d *= pr;
      t++;
    }
    if (v[t]) continue;
    if (t > mx) mx = t, k = i;
    v[t] = 1;
    for (long long j = i; j <= K; j += d)
      if (c[j] % d) return 0;
    for (long long j = i; j >= 1; j -= d)
      if (c[j] % d) return 0;
    for (int j = 1; j <= K; j++)
      if (c[j] % d == 0 && j % d != i % d) return 0;
  }
  for (int i = 1; i <= K; i++)
    while (c[i] % pr == 0) c[i] /= pr;
  p[++num] = 1;
  for (int i = 1; i <= mx; i++) p[num] *= pr;
  r[num] = p[num] - k;
  phi[num] = p[num] / pr * (pr - 1);
  return 1;
}
bool dps(int i) {
  long long x = c[i];
  for (int j = 1; j <= pl; j++) {
    if (x % pr[j]) {
      if (1ll * pr[j] * pr[j] > x) break;
      continue;
    }
    if (solve(pr[j], i) == 0) return 0;
    while (x % pr[j] == 0) x /= pr[j];
  }
  if (x > 1 && solve(x, i) == 0) return 0;
  return 1;
}
long long mul(long long a, long long b, long long mmod) {
  long long t = 0;
  while (b) {
    if (b % 2) t = (t + a) % mmod;
    b /= 2;
    a = a * 2 % mmod;
  }
  return t;
}
long long qmod(long long a, long long b, long long mmod) {
  long long t = 1;
  while (b) {
    if (b % 2) t = mul(t, a, mmod);
    b /= 2;
    a = mul(a, a, mmod);
  }
  return t;
}
long long cal() {
  long long t = 0;
  P = 1;
  for (int i = 1; i <= num; i++) P *= p[i];
  for (int i = 1; i <= num; i++)
    t = (t + mul(mul(P / p[i], r[i], P), qmod(P / p[i], phi[i] - 1, p[i]), P)) %
        P;
  t = (t + P) % P;
  return t;
}
int main() {
  get_p();
  scanf("%lld%lld%d", &n, &m, &K);
  for (int i = 1; i <= K; i++) scanf("%lld", &a[i]);
  long long x = 1;
  for (int i = 1; i <= K; i++) {
    c[i] = a[i];
    x /= gcd(x, a[i]);
    if (x > n / a[i] || x * a[i] > n) {
      printf("NO\n");
      return 0;
    }
    x *= a[i];
  }
  for (int i = 1; i <= K; i++)
    if (dps(i) == 0) {
      printf("NO\n");
      return 0;
    }
  long long y = cal();
  if (y + K > m) {
    printf("NO\n");
    return 0;
  }
  for (int i = 1; i <= K; i++)
    if (gcd(x, y + i) != a[i]) {
      printf("NO\n");
      return 0;
    }
  printf("YES\n");
  return 0;
}
