#include <cstdio>
#include <algorithm>
#define rep(i, a, b) for (int i = a ; i <= b; ++ i) 
const int M = 18, N = 3e5 + 5 ;
using namespace std ;
int n,v[M+5],x[N],L[M+1][N],R[M+1][N],dpl[N],dpr[N],bit[N],m ;
int main() {
	scanf("%d%d",&n,&v[0]) ;
	rep(i,1,n) scanf("%d",&x[i]) ;
	for (m = 1;; m++) {
		v[m]=v[m-1]/2;
		if (!v[m]) break ;
	}
	rep(j,0,m) {
		L[j][1]=L[j][0]=1 ;
		rep(i, 2, n) L[j][i]=(x[i]-x[i-1]<=v[j]?L[j][i-1]:i);
		R[j][n]=R[j][n+1]=n;
		for (int i=n-1;i;--i) R[j][i] =(x[i+1]-x[i]<=v[j]?R[j][i+1]:i);
	}
	int st=(1<<m)-1;
	dpl[0]=0,dpr[0]=n+1;
	rep(i,1,st) {
		dpl[i]=0,dpr[i]=n+1;
		rep(j,1,m) if((i>>(j-1))&1) {
			dpl[i]=max(dpl[i],R[j][dpl[i^(1<<(j-1))]+1]) ;
			dpr[i]=min(dpr[i],L[j][dpr[i^(1<<(j-1))]-1]) ;
		}
	}
	rep(i,0,n+1) bit[i]=-n;
	rep(i,0,st) bit[dpr[i]]=max(bit[dpr[i]],dpl[st^i]);
	rep(i,1,n+1) bit[i]=max(bit[i],bit[i-1]);
	rep(i,1,n) puts((bit[R[0][i]+1]>=L[0][i]-1)?"Possible":"Impossible");
	return 0 ; 
}