#include <bits/stdc++.h>
using namespace std;
pair<int, int> A[100007];
int main() {
  int i, j, k, l, m, n, x, y, z, a, b, c, r, h;
  bool flag = false;
  scanf("%d", &n);
  scanf("%d", &h);
  for (i = 0; i < n; i++) {
    scanf("%d", &A[i].first);
    A[i].second = i;
  }
  sort(A, A + n);
  a = (A[n - 1].first + A[n - 2].first) - (A[1].first + A[0].first);
  b = min(A[0].first + A[1].first + h,
          (2 < n) ? (A[1].first + A[2].first) : (INT_MAX));
  c = max((n > 2) ? (A[n - 1].first + A[n - 2].first) : (INT_MIN),
          A[0].first + A[n - 1].first + h);
  if (a > c - b) flag = true;
  a = min(a, c - b);
  printf("%d\n", a);
  for (i = 0; i < n; i++) {
    if (i == A[0].second && flag)
      printf("1 ");
    else
      printf("2 ");
  }
  printf("\n");
  return 0;
}
