You are given an array a consisting of n integer numbers.

You have to color this array in k colors in such a way that: 

  * Each element of the array should be colored in some color; 
  * For each i from 1 to k there should be at least one element colored in the i-th color in the array; 
  * For each i from 1 to k all elements colored in the i-th color should be distinct. 



Obviously, such coloring might be impossible. In this case, print "NO". Otherwise print "YES" and any coloring (i.e. numbers c_1, c_2, ... c_n, where 1 ≤ c_i ≤ k and c_i is the color of the i-th element of the given array) satisfying the conditions above. If there are multiple answers, you can print any.

Input

The first line of the input contains two integers n and k (1 ≤ k ≤ n ≤ 5000) — the length of the array a and the number of colors, respectively.

The second line of the input contains n integers a_1, a_2, ..., a_n (1 ≤ a_i ≤ 5000) — elements of the array a.

Output

If there is no answer, print "NO". Otherwise print "YES" and any coloring (i.e. numbers c_1, c_2, ... c_n, where 1 ≤ c_i ≤ k and c_i is the color of the i-th element of the given array) satisfying the conditions described in the problem statement. If there are multiple answers, you can print any.

Examples

Input


4 2
1 2 2 3


Output


YES
1 1 2 2


Input


5 2
3 2 1 2 3


Output


YES
2 1 1 2 1


Input


5 2
2 1 1 2 1


Output


NO

Note

In the first example the answer 2~ 1~ 2~ 1 is also acceptable.

In the second example the answer 1~ 1~ 1~ 2~ 2 is also acceptable.

There exist other acceptable answers for both examples.
from collections import deque,defaultdict,Counter,OrderedDict

n,k = list(map(int,input().split()))
arr = list(map(int,input().split()))

c_di = dict(Counter(arr))
c_d = sorted(c_di.items(),key=lambda x:x[1],reverse=True)
first = c_d[0]
if first[1]>k or len(arr)<k:
    print('NO')
else:
    times = len(arr)//k + 1
    keys = [i for i in range(1,k+1)]*times
    element_keys = defaultdict(deque)

    for i,j in c_di.items():
        element_keys[i].extend(keys[:j])
        keys = keys[j:]

    ans = []
    for ele in range(len(arr)):
        ans.append(element_keys[arr[ele]].popleft())

    ans = list(map(str,ans))
    print('YES')
    print(" ".join(ans))


    # element_dict = defaultdict(set)
    # keys = set(i for i in range(1,k+1))
    # done =set()
    # ans = []
    # no = 0
    # for i in range(0,len(arr)):
    #     now = keys - element_dict[arr[i]]
    #     if len(now)>0:
    #         now = list(now)
    #         ans.append(now[0])
    #         element_dict[arr[i]].add(now[0])
    #         done.add(now[0])
    #     else:
    #         no=1
    #         print('NO')
    #         break

    # if no==0:
    #     print('YES')
    #     rem = keys-done
    #     rem = list(rem)
    #     for k in range(len(rem)):
    #         ans[k] = rem[k]

    #     ans = list(map(str,ans))
    #     print(" ".join(ans))