#include <bits/stdc++.h>
using namespace std;
int a[100009];
pair<int, int> b[100009];
int c[100009];
int main() {
  int flag;
  int n, i, j, h;
  int ans = 999999999;
  int ansi;
  scanf("%d%d", &n, &h);
  for (i = 1; i <= n; i++) scanf("%d", a + i);
  for (i = 1; i <= n; i++) b[i] = make_pair(a[i], i);
  sort(b + 1, b + n + 1);
  for (i = 1; i < n; i++) {
    int minl = 999999999, minr = 999999999, minm = 999999999;
    int maxl = 0, maxr = 0, maxm = 0;
    if (i != 1) {
      minl = b[1].first + b[2].first;
      maxl = b[i].first + b[i - 1].first;
    }
    if (i != n - 1) {
      minr = b[i + 1].first + b[i + 2].first;
      maxr = b[n].first + b[n - 1].first;
    }
    maxm = max(maxl, maxr);
    minm = min(minl, minr);
    maxm = max(maxm, b[i].first + b[n].first + h);
    minm = min(minm, b[1].first + b[i + 1].first + h);
    if (maxm - minm < ans) {
      ans = maxm - minm;
      ansi = i;
    }
  }
  if (b[n].first + b[n - 1].first - b[1].first - b[2].first < ans) {
    ans = b[n].first + b[n - 1].first - b[1].first - b[2].first;
    ansi = 0;
  }
  cout << ans << endl;
  for (i = 1; i <= ansi; i++) c[b[i].second] = 1;
  for (i = ansi + 1; i <= n; i++) c[b[i].second] = 2;
  for (i = 1; i <= n; i++) cout << c[i] << " ";
}
