#include <bits/stdc++.h>
using namespace std;
long long expo(long long x, long long n, long long m) {
  if (n == 0)
    return 1;
  else if (n % 2 == 0)
    return expo((x * x) % m, n / 2, m);
  else
    return (x * expo((x * x) % m, (n - 1) / 2, m)) % m;
}
long long fun(long long k) {
  long long ans = 1;
  for (int i = 0; i < 3; i++) {
    ans *= (k - i);
  }
  for (int i = 1; i <= 3; i++) {
    ans = ans / i;
  }
  return ans;
}
void solve() {
  int n, k;
  cin >> n >> k;
  int count[5010];
  memset(count, 0, sizeof(count));
  ;
  int arr[n + 1];
  int maxx = 1;
  int colour = 1;
  for (int i = 1; i <= n; i++) {
    int t;
    cin >> t;
    arr[i] = t;
    count[t]++;
    if (count[t] > maxx) maxx = count[t];
  }
  if (maxx > k)
    cout << "NO" << endl;
  else {
    cout << "YES" << endl;
    int ans[n + 1];
    for (int i = 1; i <= 5000; i++) {
      for (int j = 1; j <= n; j++) {
        if (arr[j] == i) {
          ans[j] = colour;
          colour++;
          if (colour > k) colour = 1;
        }
      }
    }
    for (int i = 1; i <= n; i++) cout << ans[i] << " ";
    cout << endl;
  }
  return;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int t;
  t = 1;
  while (t--) solve();
  return 0;
}
