#include <bits/stdc++.h>
const int N = 1e4 + 5;
int k;
__int128 x, y, m[N], r[N];
__int128 mul(__int128 x, __int128 p, __int128 mod) {
  return (__int128)x * p % mod;
}
void exgcd(__int128 a, __int128 b, __int128 &x, __int128 &y, __int128 c) {
  if (!b) {
    x = c / a, y = 0;
    return;
  }
  exgcd(b, a % b, y, x, c);
  y -= a / b * x;
}
__int128 gcd(__int128 x, __int128 y) { return y ? gcd(y, x % y) : x; }
__int128 lcm(__int128 x, __int128 y) { return x / gcd(x, y) * y; }
__int128 China(int n) {
  __int128 M = m[1], R = r[1];
  for (int i = 2; i <= n; ++i) {
    __int128 a = M, b = m[i], c = r[i] - R, x, y;
    __int128 d = gcd(a, b);
    if (c % d) return -1;
    exgcd(a, b, x, y, c);
    R += x * M, M *= m[i] / d, R = (R % M + M) % M;
  }
  if (!R) R = M;
  if (R < 1 || R + k - 1 > y) return -1;
  return R;
}
int main() {
  scanf("%lld%lld%d", &x, &y, &k);
  __int128 xx = 1;
  for (int i = 1; i <= k; ++i) {
    scanf("%lld", &m[i]);
    if ((xx = lcm(xx, m[i])) > x) return puts("NO"), 0;
    r[i] = ((m[i] - i + 1) % m[i] + m[i]) % m[i];
  }
  __int128 yy = China(k);
  if (yy == -1) return puts("NO"), 0;
  for (int i = 1; i <= k; ++i) {
    if (gcd(xx, yy + i - 1) != m[i]) return puts("NO"), 0;
  }
  return puts("YES"), 0;
}
