There are N arrays. The length of each array is M and initially each array contains integers (1，2，...，M) in this order.

Mr. Takahashi has decided to perform Q operations on those N arrays. For the i-th (1≤i≤Q) time, he performs the following operation.

* Choose an arbitrary array from the N arrays and move the integer a_i (1≤a_i≤M) to the front of that array. For example, after performing the operation on a_i=2 and the array (5，4，3，2，1), this array becomes (2，5，4，3，1).



Mr. Takahashi wants to make N arrays exactly the same after performing the Q operations. Determine if it is possible or not.

Constraints

* 2≤N≤10^5
* 2≤M≤10^5
* 1≤Q≤10^5
* 1≤a_i≤M

Input

The input is given from Standard Input in the following format:


N M
Q
a_1 a_2 ... a_Q


Output

Print `Yes` if it is possible to make N arrays exactly the same after performing the Q operations. Otherwise, print `No`.

Examples

Input

2 2
3
2 1 2


Output

Yes


Input

3 2
3
2 1 2


Output

No


Input

2 3
3
3 2 1


Output

Yes


Input

3 3
6
1 2 2 3 3 3


Output

No

"""
Writer: SPD_9X2
https://atcoder.jp/contests/code-festival-2016-quala/tasks/codefestival_2016_qualA_e

最後の配列の状態は何で決定されるか。
同じaが同じ配列に複数回採用されたとき、効果があるのは最後に
採用したaのみ。(それ以前は合っても無くても同じになる)

最初、1が採用状態になっていると考えてよい。
→おそらく気にすべきは配列aのみ(Nこの配列は考慮しなくてよい)

1以外は、出現するなら少なくともN個出現しなければ不可能
2,3だけで考えてみよう

N==3のとき

322233 →不可能(2が先頭が1つ生まれてしまう)
232233 →可能

→終了後の配列の数字は、最後に出現した順に前から並ぶ
→よってaを見れば構成後の数列は分かる

→後ろからaを見ていって、先に登場したやつより後に登場したほうが数が越えたらダメ
→ただし、N個目以降は完全無視する
→終了時に数がNに達していないのがあったらダメ(1を除く？)

いや例3…
→初期状態、の扱い方を考え直さなきゃな…

aの前に M…M(N個),M-1…M-1,…,1…1 があると考える
すると、aを後ろから見ていった時に先に登場したやつより後に登場したほうが数が越えてはいけない、
だけの条件になる！！

あ、2233223 は…？
最後の2つの2を1箇所に適応すれば可能じゃん！
lis[a[i][0]]ってなんだ…？
→それ以降に先頭をa[i][0]に更新できる最大数
→よって、indに対して単調減少になっていなければいけない

うん？前を超えないようにして、最終的にすべてN以上になればおｋ？
"""
import sys
N,M = map(int,input().split())

Q = int(input())

A = list(map(int,input().split()))

dic = {}
lis = []
flag = True

a = [[M-i,N] for i in range(M)]
for i in range(Q):
    a.append([A[i],1])
a.reverse()
#print (a)

for i in range(len(a)):

    if a[i][0] not in dic:
        ind = len(dic)
        dic[a[i][0]] = ind
        if ind != 0:
            lis.append(min(lis[ind-1] , a[i][1]))
        else:
            lis.append(a[i][1])
    else:
        ind = dic[a[i][0]]
        if ind != 0:
            lis[ind] = min(N, lis[ind] + a[i][1] , lis[ind-1])
        else:
            lis[ind] = min(N, lis[ind] + a[i][1])

if lis[-1] == N:
    print ("Yes")
else:
    print ("No")