#include <bits/stdc++.h>
using namespace std;
const int N = 11000;
long long n, m, a[N];
int p, flag;
long long exgcd(long long a, long long b, long long &x, long long &y) {
  if (a == 0) {
    x = 0;
    y = 1;
    return b;
  }
  long long d, tx, ty;
  d = exgcd(b % a, a, tx, ty);
  x = ty - (b / a) * tx;
  y = tx;
  return d;
}
long long gcd(long long a, long long b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
long long mul(long long a, long long b, long long M) {
  long long ans = 0;
  long long f = 1;
  if (a < 0) f = -1 * f, a = -a;
  if (b < 0) f = -1 * f, b = -b;
  while (b) {
    if (b & 1) ans = (ans + a) % M;
    a = (a + a) % M;
    b >>= 1;
  }
  return ans * f;
}
int main() {
  scanf("%lld%lld%d", &n, &m, &p);
  for (int i = 1; i <= p; i++) scanf("%lld", &a[i]);
  long long m1, m2, b1, b2, d, x, y, k;
  m1 = a[1];
  b1 = a[1];
  flag = 0;
  for (int i = 2; i <= p; i++) {
    m2 = a[i];
    b2 = a[i] - i + 1;
    k = b2 - b1;
    d = exgcd(m1, m2, x, y);
    if (k % d) {
      flag = 1;
      break;
    }
    x = mul(x, k / d, m2 / d);
    x = (x + (m2 / d)) % (m2 / d);
    b1 = m1 * x + b1;
    m1 = m1 / d * m2;
  }
  if (b1 == 0) b1 = m1;
  if (m1 > n) flag = 1;
  if (b1 > m - p + 1) flag = 1;
  for (int i = 1; i <= p; i++)
    if (gcd(b1 + i - 1, m1) != a[i]) {
      flag = 1;
      break;
    }
  if (flag)
    printf("NO\n");
  else
    printf("YES\n");
  return 0;
}
