#include<stdio.h>
void fmax(int&a,int b){
	if(b>a)a=b;
}
void fmin(int&a,int b){
	if(b<a)a=b;
}
int x[200010],l[20][200010],r[20][200010],n;
void pre(int p,int d){
	int*l=::l[p],*r=::r[p],i;
	l[1]=1;
	for(i=2;i<=n;i++)l[i]=x[i]-x[i-1]>d?i:l[i-1];
	r[n]=n;
	for(i=n-1;i>0;i--)r[i]=x[i+1]-x[i]>d?i:r[i+1];
	l[0]=1;
	r[n+1]=n;
}
int fl[262144],fr[262144],s[200010];
void gao(int l,int r){
	if(l<=r){
		s[l]++;
		s[r+1]--;
	}
}
int main(){
	int V,M,i,j;
	scanf("%d%d",&n,&V);
	for(i=1;i<=n;i++)scanf("%d",x+i);
	for(M=0;V;V>>=1)pre(M++,V);
	pre(M,0);
	fr[0]=n+1;
	for(i=1;i<1<<M;i++){
		fr[i]=n;
		for(j=0;j<M;j++){
			if(i>>j&1){
				fmax(fl[i],r[j+1][fl[i^(1<<j)]+1]);
				fmin(fr[i],l[j+1][fr[i^(1<<j)]-1]);
			}
		}
	}
	for(i=0;i<1<<M;i++){
		gao(l[0][fr[((1<<M)-1)^i]-1],r[0][fl[i]+1]);
	}
	for(i=1;i<=n;i++){
		s[i]+=s[i-1];
		puts(s[i]?"Possible":"Impossible");
	}
}