#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
int n, m, q, a[N], vec[N], cnt[N], pos[N];
set<int> st;
int main() {
	scanf("%d%d%d", &n, &m, &q);
	for (int i = 1; i <= q; i++) {
		scanf("%d", &a[i]);
	}
	for (int i = 1; i <= m; i++) st.insert(i);
	int tmp = 0;
	for (int i = q; i >= 1; i--) {
		if (st.count(a[i])) {
			vec[++tmp] = a[i];
			st.erase(a[i]);
		}
	}
	while (st.size()) {
		vec[++tmp] = *st.begin();
		st.erase(st.begin());
	}
	for (int i = 1; i <= m; i++) pos[vec[i]] = i;
	for (int i = q; i >= 1; i--) {
		int p = pos[a[i]];
		cnt[p] = min(cnt[p] + 1, n);
		if (p > 1 && cnt[p - 1] < cnt[p]) {
			if (!cnt[p - 1]) {
				puts("No");
				return 0;
			}
			cnt[p] = cnt[p - 1];
		}
	}
	int st;
	for (st = m; st > 1 && vec[st - 1] < vec[st]; st--);
	for (int i = 1; i < st; i++) {
		if (cnt[i] < n) {
			puts("No");
			return 0;
		}
	}
	puts("Yes");
	return 0;
}