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.
//package integersequence;

import java.util.*;

public class IntegerSequence {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        /*long n = Long.parseLong(input.nextLine());
        if(n%4 == 1 || n%4 == 2)
            System.out.println("1");
        else
            System.out.println("0");*/
        
        
        
        /*for(int i=0; i<array.length; i++) {
            array[i] = Integer.parseInt(line[i]);
            if(check[array[i]] == 0) {
                if(colorUsed % colors == 0)
                    check[array[i]] = colors;
                else
                    check[array[i]] = colorUsed % colors;
                colorUsed++;
                if(colorUsed > colors)
                    possible= true;
            }
            else {
                System.out.println("num = " + array[i] + " check = " + check[array[i]]);
                if(check[array[i]] == colors)
                    check[array[i]] = 1;
                else
                    check[array[i]]++;
            }
            
            if(colorUsed <= check[array[i]])
                colorUsed = check[array[i]] + 1;
            
            if(colorUsed > colors)
                possible = true;
            
            count[array[i]]++;
            if(count[array[i]] == colors)
                possible = true;
            else if(count[array[i]] > colors) {
                possible = false;
                break;
            }
            System.out.println("colorUsed = " +colorUsed);
            finalColors[i] = check[array[i]];
            
        }
        
        if(!possible)
            System.out.println("NO");
        else {
            System.out.println("YES");
            for(int i=0; i<array.length; i++) {
                System.out.print(finalColors[i] + " ");
            }
            System.out.println();
        }*/
        
        int check[] = new int[5001];
        int count[] = new int[5001];
        String line[] = input.nextLine().split(" ");
        int array[] = new int[Integer.parseInt(line[0])];
        int finalColors[] = new int[Integer.parseInt(line[0])];
        int colors = Integer.parseInt(line[1]);
        int colorUsed = 1;
        boolean possible = true;
        
        if(array.length < colors)
            possible = false;
        
        line = input.nextLine().split(" ");
        
        for(int i=0; i<array.length; i++) {
            array[i] = Integer.parseInt(line[i]);
            count[array[i]]++;
            if(count[array[i]] > colors) {
                possible = false;
                break;
            }
        }
        
        if(!possible) {
            System.out.println("NO");
            System.exit(0);
        }
        
        for(int i=0; i<array.length; i++) {
            if(finalColors[i] != 0)
                continue;
            int num = array[i];
            for(int j=i; j<array.length; j++) {
                if(array[j] == num) {
                    finalColors[j] = colorUsed;
                    if(colorUsed == colors)
                        colorUsed = 1;
                    else
                        colorUsed++;
                }
                
            }
        }
        
        System.out.println("YES");
            for(int i=0; i<array.length; i++) {
                System.out.print(finalColors[i] + " ");
            }
            System.out.println();
    }
}
