#include <bits/stdc++.h>
using namespace std;
const int N = 10005;
long long n, m, a[N], row = 1LL;
int k;
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
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 g = extend_gcd(b, a % b, x, y);
  long long t = x;
  x = y;
  y = t - a / b * x;
  return g;
}
int main() {
  int t;
  cin >> n >> m >> k;
  for (int i = 0; i < k; i++) {
    cin >> a[i];
    row = row / gcd(row, a[i]) * a[i];
    if (row <= 0 || row > 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 g = extend_gcd(A, B, x, y);
    if (C % g) {
      puts("NO");
      return 0;
    }
    if (B % g) puts("ERROR");
    long long t = B / g;
    x = x * (C / g);
    x = (x % t + t) % t;
    if (x < 0) x -= t;
    u = u + v * x;
    v = v / gcd(v, a[i]) * a[i];
  }
  if (u == 0) u += row;
  if (u + k - 1 > m) {
    puts("NO");
    return 0;
  }
  for (int i = 0; i < k; i++) {
    if (gcd(row, u + i) != a[i]) {
      puts("NO");
      return 0;
    }
  }
  puts("YES");
  return 0;
}
