#include <bits/stdc++.h>
using namespace std;
const int N = 200010;
int n, m, a[N];
int lb[20][N], rb[20][N], cnt;
int fl[1058576], fr[1058576], mx, s[N];

void init() {
	lb[cnt][1] = 1;
	for(int i = 2; i <= n; i++) lb[cnt][i] = (a[i] - a[i - 1] > m) ? i : lb[cnt][i - 1];
	rb[cnt][n] = n;
	for(int i = n - 1; i; i--) rb[cnt][i] = (a[i + 1] - a[i] > m) ? i : rb[cnt][i + 1];
	lb[cnt][0] = 1, rb[cnt][n + 1] = n;
}
int main() {
	scanf("%d%d", &n, &m);
	for(int i = 1; i <= n; i++) scanf("%d", &a[i]);
	for(; m; m /= 2) init(), ++cnt; init();
	fr[0] = n + 1, mx = (1 << cnt) - 1;
	for(int i = 1; i <= mx; i++) {
		fr[i] = n;
		for(int j = 0; j < cnt; j++) if(i & (1 << j)) {
			fl[i] = max(fl[i], rb[j + 1][fl[i ^ (1 << j)] + 1]);
			fr[i] = min(fr[i], lb[j + 1][fr[i ^ (1 << j)] - 1]);
		}
	}
	for(int i = 0; i <= mx; i++) {
		int x = lb[0][fr[mx ^ i] - 1], y = rb[0][fl[i] + 1];
		if(x <= y) ++s[x], --s[y + 1];
	}
	for(int i = 1; i <= n; i++)
		s[i] += s[i - 1], puts(s[i] ? "Possible" : "Impossible");
	return 0;
}