#include <bits/stdc++.h>
using namespace std;
const long long maxn = 5050;
long long a[maxn];
long long c[maxn];
long long tag[maxn];
long long number[maxn];
int main() {
  long long i, j, k, n, m;
  while (scanf("%lld%lld", &n, &k) != EOF) {
    memset(tag, 0, sizeof(tag));
    for (i = 1; i <= n; i++) {
      scanf("%lld", &a[i]);
      tag[a[i]]++;
    }
    for (i = 1; i <= 5000; i++) number[i] = 1;
    bool flag = true;
    for (i = 1; i <= 5000; i++)
      if (tag[i] > k) {
        flag = false;
        break;
      }
    if (!flag)
      printf("NO\n");
    else {
      long long cnt = 1;
      for (i = 1; i <= 5000; i++) {
        for (j = 1; j <= 5000; j++)
          if (a[j] == i) {
            c[j] = cnt;
            cnt++;
            if (cnt > k) cnt = 1;
          }
      }
      printf("YES\n");
      for (i = 1; i <= n; i++) printf("%lld ", c[i]);
      printf("\n");
    }
  }
}
