#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <algorithm>

#define For(i, j, k) for(int i = j; i <= k; i++)
#define Forr(i, j, k) for(int i = j; i >= k; i--)

using namespace std;

const int N = 400010;

int n, p, V, X[N];
int tor[N][20], tol[N][20];
int dpl[N], dpr[N], cnt[N];

int main(){
	scanf("%d%d", &n, &V);
	For(i, 1, n) scanf("%d", &X[i]);
	X[0] = -2e9, X[n + 1] = 2e9;
	For(i, 0, 19){
		int l = 1;
		For(j, 1, n) 
			if(1ll * X[j + 1] - X[j] > V){
				For(k, l, j) tol[k][i] = l, tor[k][i] = j;
				l = j + 1;
			}
		tor[n + 1][i] = tor[0][i] = n + 1;
		tol[0][i] = tor[n + 1][i] = 0;
		if(!V){
			p = i;
			break;
		}
		V >>= 1;
	}
	int S = (1 << p) - 1;
	dpl[0] = 0;
	For(i, 1, S){
		dpl[i] = 0;
		For(j, 1, p) if(i & (1 << (j - 1))) dpl[i] = max(dpl[i], tor[dpl[i ^ (1 << (j - 1))] + 1][j]);
	}
	dpr[0] = n + 1;
	For(i, 1, S){
		dpr[i] = n + 1;
		For(j, 1, p) if(i & (1 << (j - 1))) dpr[i] = min(dpr[i], tol[dpr[i ^ (1 << (j - 1))] - 1][j]);
	}
	For(i, 0, S){
		int L = dpl[i] + 1, R = dpr[S ^ i] - 1;
		if(tor[L][0] >= R) cnt[tol[L][0]]++, cnt[tor[R][0] + 1]--;
	}
	For(i, 1, n){
		cnt[i] += cnt[i - 1];
		if(cnt[i]) puts("Possible");
		else puts("Impossible");
	}
	return 0;
}