#include <bits/stdc++.h>
using namespace std;
const long long maxn = 1e4 + 10;
long long n, m, k, a[maxn], md[maxn];
long long exgcd(long long a, long long b, long long &x, long long &y) {
  if (b == 0) {
    x = 1;
    y = 0;
    return a;
  }
  long long p = exgcd(b, a % b, x, y);
  long long tmp = x;
  x = y;
  y = tmp - (a / b) * y;
  return p;
}
long long exchina() {
  long long mod = md[0], ans = a[0];
  for (long long i = 1; i < k; i++) {
    long long x, y;
    long long tmp = a[i] - ans, d = exgcd(mod, md[i], x, y);
    if (tmp % d != 0) return -1;
    long long MOD = md[i] / d;
    x = (x * tmp / d % MOD + MOD) % MOD;
    ans += x * mod;
    mod = mod * md[i] / d;
    ans = (ans + mod) % mod;
  }
  return ans;
}
signed main() {
  cin >> n >> m >> k;
  for (long long i = 0; i < k; i++) cin >> md[i], a[i] = -i;
  long long x = 1;
  for (long long i = 0; i < k; i++) {
    long long now;
    now = exgcd(x, md[i], now, now);
    x = x * md[i] / now;
    if (x > n) {
      cout << "NO";
      return 0;
    }
  }
  long long y = exchina();
  if (y < 0) {
    cout << "NO";
    return 0;
  }
  if (y == 0) y = x;
  if (y + k - 1 > m) {
    cout << "NO";
    return 0;
  }
  long long ul;
  for (long long i = 0; i < k; i++)
    if (exgcd(x, y + i, ul, ul) != md[i]) {
      cout << "NO";
      return 0;
    }
  cout << "YES";
  return 0;
}
