#include <bits/stdc++.h>
using namespace std;
const int maxn = 10005;
long long n, m, a[maxn], lcm = 1LL;
int k;
long long gcd(long long a, long long b) {
  while (b) {
    long long t = a;
    a = b;
    b = t % b;
  }
  return a;
}
long long extend_gcd(long long a, long long b, long long &x, long long &y) {
  if (b == 0) {
    x = 1LL;
    y = 0;
    return a;
  }
  long long d = extend_gcd(b, a % b, x, y);
  long long t = x;
  x = y;
  y = t - a / b * x;
  return d;
}
int main() {
  scanf("%I64d %I64d %d", &n, &m, &k);
  for (int i = 0; i < k; i++) {
    scanf("%I64d", &a[i]);
    lcm = lcm * a[i] / gcd(lcm, a[i]);
    if (lcm <= 0 || lcm > n) {
      puts("NO");
      return 0;
    }
  }
  long long u = 0LL, v = a[0];
  for (int i = 1; i < k; i++) {
    long long x, y, A = v, B = -a[i], C = -u - i;
    long long d = extend_gcd(A, B, x, y);
    if (C % d) {
      puts("NO");
      return 0;
    }
    B /= d;
    C /= d;
    x = ((x * C) % B + B) % B;
    if (x < 0) x -= B;
    u += v * x;
    v *= a[i] / gcd(v, a[i]);
  }
  if (u == 0) u += lcm;
  if (u + k - 1 > m) {
    puts("NO");
    return 0;
  }
  for (int i = 0; i < k; i++) {
    if (gcd(lcm, u + i) != a[i]) {
      puts("NO");
      return 0;
    }
  }
  puts("YES");
  return 0;
}
