#include <bits/stdc++.h>
using namespace std;
const int oo = (int)1e9;
const double eps = 1e-7;
const int MAXN = 1000005;
int n;
pair<int, int> a[2 * MAXN];
int main() {
  int k;
  cin >> n >> k;
  for (int i = 0; i < n; i++) cin >> a[i].first, a[i].second = i;
  sort(a, a + n);
  int diff = a[n - 1].first + a[n - 2].first - (a[0].first + a[1].first);
  int idx = 0;
  for (int i = 1; i < n; i++) {
    int mx = 0;
    int mn = 1e9;
    mn = a[i].first + a[0].first + k;
    if (i + 1 < n) mn = min(mn, a[i].first + a[i + 1].first);
    if (i != 1) mn = min(mn, a[0].first + a[1].first);
    mx = a[i - 1].first + a[n - 1].first + k;
    if (i == n - 1) {
      if (n != 2) mx = max(a[i - 1].first + a[i - 2].first, mx);
      mx = max(a[i].first + a[i - 1].first + k, mx);
    } else
      mx = max(mx, a[n - 1].first + a[n - 2].first);
    if (mx - mn < diff) idx = i;
    diff = min(diff, mx - mn);
  }
  cout << diff << endl;
  for (int i = 0; i < idx; i++) a[i].first = 1;
  for (int i = idx; i < n; i++) a[i].first = 2;
  for (int i = 0; i < n; i++) swap(a[i].first, a[i].second);
  sort(a, a + n);
  for (int i = 0; i < n; i++) cout << a[i].second << " ";
}
