#include <bits/stdc++.h>
using namespace std;
int N, M, D, mx, mxi, ans[200200];
pair<int, int> a[200200];
int main() {
  scanf("%d %d %d", &N, &M, &D);
  for (int i = (0); i < (N); i++) scanf("%d", &a[i].first), a[i].second = i;
  sort(a, a + N);
  int R = 0;
  for (int L = (0); L < (N); L++) {
    while (R < N && a[R].first <= a[L].first + D) {
      R++;
    }
    if (R - L > mx) {
      mx = R - L;
      mxi = L;
    }
  }
  printf("%d\n", mx);
  for (int i = (0); i < (N); i++) ans[a[i].second] = i % mx;
  for (int i = (0); i < (N); i++) printf("%d ", ans[i] + 1);
  return 0;
}
