#include <bits/stdc++.h>
using namespace std;
const int MAX = 100000 + 10;
const int INF = 1000000000;
int n, h, num[MAX], a[MAX], answer[MAX];
int cmp(int c, int d) { return a[c] < a[d]; }
int main() {
  int i;
  scanf("%d %d", &n, &h);
  for (i = 1; i <= n; ++i) {
    scanf("%d", &a[i]);
    num[i] = i;
  }
  sort(num + 1, num + n + 1, cmp);
  sort(a + 1, a + n + 1);
  int ans = INF, ans1 = 1;
  for (i = 1; i <= n + 1; ++i) {
    int m1 = INF, m2 = 0;
    if (i - 1 >= 2) m1 = min(m1, a[1] + a[2]);
    if (i + 1 <= n) m1 = min(m1, a[i + 1] + a[i]);
    if (i - 1 >= 1 && i <= n) m1 = min(a[1] + a[i] + h, m1);
    if (i - 1 >= 2) m2 = max(m2, a[i - 1] + a[i - 2]);
    if (i + 1 <= n) m2 = max(m2, a[n - 1] + a[n]);
    if (i - 1 >= 1 && i <= n) m2 = max(a[i - 1] + a[n] + h, m2);
    if (m2 - m1 < ans) {
      ans = m2 - m1;
      ans1 = i;
    }
  }
  printf("%d\n", ans);
  for (i = 1; i <= n; ++i) answer[num[i]] = ((i < ans1) ^ 1) + 1;
  for (i = 1; i <= n; ++i) printf("%d ", answer[i]);
  printf("\n");
}
