#include <bits/stdc++.h>
using namespace std;
pair<int, int> a[100007];
int b[100007], ans[100007];
int main() {
  int n, h;
  cin >> n >> h;
  for (int(i) = (int)(0); (i) < (int)(n); ++(i)) {
    int tmp;
    scanf("%d", &tmp);
    a[i].first = tmp, a[i].second = i + 1;
  }
  sort(a, a + n);
  for (int(i) = (int)(0); (i) < (int)(n); ++(i)) b[i] = a[i].first;
  int diff = (b[n - 1] + b[n - 2]) - (b[0] + b[1]);
  int km = 0;
  for (int(k) = (int)(1); (k) < (int)(n); ++(k)) {
    int tmp;
    int small = 1 << 30;
    if (k >= 2) {
      tmp = b[1] + b[2];
      if (tmp < small) small = tmp;
    }
    tmp = b[0] + b[1] + h;
    if (tmp < small) small = tmp;
    if (k < n - 1) {
      tmp = b[0] + b[k + 1];
      if (tmp < small) small = tmp;
    }
    int big = b[n - 1] + h;
    if (k == n - 1)
      big += b[0];
    else
      big += b[k];
    tmp = b[n - 1] + b[n - 2];
    if (tmp > big) big = tmp;
    if (big - small < diff) {
      diff = big - small;
      km = k;
    }
  }
  cout << diff << endl;
  for (int(i) = (int)(1); (i) < (int)(n + 1); ++(i)) ans[i] = 1;
  for (int(i) = (int)(1); (i) < (int)(km + 1); ++(i)) ans[a[i].second] = 2;
  for (int(i) = (int)(1); (i) < (int)(n); ++(i)) cout << ans[i] << " ";
  cout << ans[n] << endl;
  return 0;
}
