#include <bits/stdc++.h>
using namespace std;
long long n, m, k, A[10001];
long long gcd(long long a, long long b) { return !b ? a : gcd(b, a % b); }
void exgcd(long long a, long long b, long long &x, long long &y) {
  if (!b) {
    x = 1, y = 0;
    return;
  }
  exgcd(b, a % b, y, x);
  y -= a / b * x;
}
int main() {
  scanf("%lld%lld%lld", &n, &m, &k);
  for (int i = 1; i <= k; ++i) scanf("%lld", &A[i]);
  long long r = 0, p = A[1];
  for (int i = 1; i < k; ++i) {
    long long g = gcd(p, A[i + 1]), x, y;
    if ((-r - i) % g) {
      printf("NO");
      return 0;
    }
    exgcd(p, A[i + 1], x, y);
    x = (-r - i) / g * x % ((A[i + 1]) / g);
    r += p * x;
    p = p / gcd(p, A[i + 1]) * A[i + 1];
  }
  while (r <= 0) r += p;
  if (p <= 0 || p > n) {
    printf("NO");
    return 0;
  }
  if (r <= 0 || r + k - 1 > m) {
    printf("NO");
    return 0;
  }
  for (int i = 0; i < k; ++i)
    if (gcd(p, r + i) != A[i + 1]) {
      printf("NO");
      return 0;
    }
  printf("YES");
}
