#include<cstdio>
#include<algorithm>
#define fo(i,a,b) for(i=a;i<=b;i++)
#define fd(i,a,b) for(i=a;i>=b;i--)
using namespace std;
const int maxn=200000+10,lgn=20;
int f[maxn*5],g[maxn*5],mi[maxn],left[maxn][lgn+10],right[maxn][lgn+10],v[lgn+10],x[maxn];
int i,j,k,l,r,s,t,n,m,tot,top;
int main(){
	scanf("%d%d",&n,&t);
	fo(i,1,n) scanf("%d",&x[i]);
	v[0]=t;
	t/=2;
	while (t){
		v[++top]=t;
		t/=2;
	}
	v[++top]=0;
	reverse(v,v+top+1);
	fo(j,0,top){
		left[1][j]=1;
		fo(i,2,n)
			if (x[i]-x[i-1]<=v[j]) left[i][j]=left[i-1][j];else left[i][j]=i;
		right[n][j]=n;
		fd(i,n-1,1)
			if (x[i+1]-x[i]<=v[j]) right[i][j]=right[i+1][j];else right[i][j]=i;
	}
	f[0]=0;
	g[0]=n+1;
	fo(s,1,(1<<(top+1))-1){
		f[s]=0;
		g[s]=n+1;
		fo(i,0,top)
			if (s&(1<<i)){
				r=s^(1<<i);
				if (f[r]==n) f[s]=n;
				else f[s]=max(f[s],right[f[r]+1][i]);
				if (g[r]==1) g[s]=1;
				else g[s]=min(g[s],left[g[r]-1][i]);
			}
	}
	fo(i,0,n) mi[i]=n+2;
	fo(i,0,(1<<top)-1){
		r=((1<<top)-1)^i;
		mi[f[i]]=min(mi[f[i]],g[r]);
	}
	fd(i,n-1,0) mi[i]=min(mi[i],mi[i+1]);
	fo(i,1,n){
		l=left[i][top];r=right[i][top];
		if (mi[l-1]<=r+1) printf("Possible\n");else printf("Impossible\n");
	}
}