#include <bits/stdc++.h>
#include <atcoder/all>
using namespace std;
using namespace atcoder;
#define rep(i, n) for(int i=0; i<n; i++)
#define all(v) v.begin(), v.end()
typedef int64_t lint;

template<class T> inline void vecout(vector<T> v) {
	rep(i, v.size()) { cout << v.at(i) << ' '; } cout << endl;
}

int main() {
	int N, K;
	cin >> N >> K;
	int a=1, b=1, c=0, x, y, z;
	vector<int> v(N);
	rep(i, N) {
		cin >> v.at(i);
	}
	two_sat ts(N);
	rep(i, N-1) {
		if (abs(v.at(i+1)-v.at(x)) <= K) {
			ts.add_clause(x, true, i+1, true);
			x = i+1;
		} else if (abs(v.at(i+1)-v.at(i)) <= K) {
			ts.add_clause(i, true, i+1, true);
			x = i+1;
		}
		//  else {
		// 	ts.add_clause(i, false, i+1, false);
		// }
	}
	ts.satisfiable();
	auto ans = ts.answer();
	vecout(ans);
	rep(i, N) {
		if (ans.at(i)) a++;
	}
	cout << a << '\n';
}
