#include <bits/stdc++.h>
long long int const MOD = 1000000007;
long long int const N = 1000005;
long long int const LN = 20;
long long int const inf = 8e18;
using namespace std;
long long int n, m, a[N];
pair<long long int, long long int> b[N];
long long int aa[N];
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  long long int n, h;
  cin >> n >> h;
  for (long long int i = 1; i <= n; i++) cin >> a[i], b[i] = {a[i], i};
  sort(a + 1, a + n + 1);
  sort(b + 1, b + n + 1);
  if (n == 2) {
    cout << 0 << '\n';
    for (long long int i = 1; i <= n; i++) cout << 1 << " ";
    return 0;
  }
  long long int ans = -inf;
  ans = a[n] + a[n - 1] - (a[1] + a[2]);
  long long int idx = 0;
  for (long long int i = 2; i < n - 1; i++) {
    long long int mi = min(a[i] + a[i + 1] + h, a[1] + a[2]);
    long long int mx = max(a[n] + a[i] + h, a[n] + a[n - 1]);
    if (mx - mi < ans) {
      ans = mx - mi;
      idx = i;
    }
  }
  {
    long long int mi = min(a[2] + a[3], h + a[1] + a[2]);
    long long int mx = max(a[n] + a[1] + h, a[n] + a[n - 1]);
    if (mx - mi < ans) {
      ans = mx - mi;
      idx = 1;
    }
  }
  {
    long long int mi = a[1] + a[2];
    long long int mx = a[n] + a[n - 1] + h;
    if (mx - mi < ans) {
      ans = mx - mi;
      idx = n - 1;
    }
  }
  a[0] = -1;
  cout << ans << '\n';
  for (long long int i = 1; i <= idx; i++) aa[b[i].second] = 1;
  for (long long int i = idx + 1; i <= n; i++) aa[b[i].second] = 2;
  for (long long int i = 1; i <= n; i++) cout << aa[i] << " ";
  return 0;
}
