#include <bits/stdc++.h>
using namespace std;
int N, H;
pair<int, int> A[100000];
int ans[100000];
int main() {
  scanf("%d%d", &N, &H);
  for (int(i) = 0; (i) < (N); (i)++) scanf("%d", &A[i].first), A[i].second = i;
  sort(A, A + N);
  int res = A[N - 1].first + A[N - 2].first - (A[0].first + A[1].first);
  int pos = 0;
  for (int(i) = (1); (i) < (N); (i)++) {
    int mx = A[N - 1].first + A[i - 1].first + H;
    if (i < N - 1) mx = max(mx, A[N - 1].first + A[N - 2].first);
    int mi = A[0].first + A[1].first + H * (i == 1);
    if (i + 1 < N) mi = min(mi, A[i].first + A[i + 1].first);
    if (mx - mi < res) res = mx - mi, pos = i;
  }
  for (int(i) = 0; (i) < (pos); (i)++) ans[A[i].second] = 1;
  printf("%d\n", res);
  for (int(i) = 0; (i) < (N); (i)++) printf("%d ", ans[i] + 1);
}
