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.

import java.util.*;


public class Main {
static class p{
	int x;int y,c;
	p(int x,int y){
		this.x=x;this.y=y;
	}
}
static class sort implements Comparator<p>{
	public int compare(p p1,p p2) {
		if(p1.x!=p2.x)
			return p1.x-p2.x;
		return p1.y-p2.y;
	}
}
static class sort1 implements Comparator<p>{
	public int compare(p p1,p p2) {
		if(p1.y!=p2.y)
			return p1.y-p2.y;
		return p1.x-p2.x;
	}
}   
public static void main (String[] args) {
    Scanner s=new Scanner(System.in);
 int n=s.nextInt();
 int k=s.nextInt();
     int a[]=new int[n];
     for(int i=0;i<n;i++)
    	 a[i]=s.nextInt();
     boolean d=true;
     HashMap<Integer,Integer> h=new HashMap();
     for(int i=0;i<n;i++) {
    	 if(h.containsKey(a[i])) {
    		 int tt=h.get(a[i])+1;
    		 if(tt>k) {
    			 d=false;
    			 break;
    		 }
    		 h.put(a[i], tt);
    	 }
    	 else
    		 h.put(a[i], 1);
     }
     if(!d) {
    	 System.out.println("NO");
    	 return;
     }
    
     ArrayList<p> xx=new ArrayList();
     for(int i=0;i<n;i++) {
    	 xx.add(new p(a[i],i));
     }
     Collections.sort(xx,new sort());
     int j=1;
     
     for(int i=0;i<n;i++) {
    	j=j+1;
    	if(j==k+1) {
    		j=1;
    	}
    	xx.get(i).c=j;
     }
     Collections.sort(xx,new sort1());
     System.out.println("YES");
     for(int i=0;i<n;i++)
    	 System.out.print(xx.get(i).c+" ");
     System.out.println();
     
     
    }

}
