#include<bits/stdc++.h>
const int N=533333;
int n,V,vs[20],vp=0,mx,xs[N],f1[N],f2[N],ls[20][N],rs[20][N],ml[N];
void maxs(int&a,int b){if(a<b)a=b;}
void mins(int&a,int b){if(a>b)a=b;}
int main(){
	scanf("%d%d",&n,&V);
	for(int i=1;i<=n;++i)scanf("%d",xs+i);
	for(int a=V>>1;vs[vp++]=a;a>>=1);
	mx=1<<vp,vs[vp]=V;
	for(int z=0;z<=vp;++z){
		rs[z][n+1]=n,ls[z][0]=1;
		for(int i=1,j=1,x=vs[z];i<=n;i=j){
			for(++j;j<=n&&xs[j]-xs[j-1]<=x;++j);
			for(int k=i;k<j;++k)ls[z][k]=i,rs[z][k]=j-1;
		}
	}
	for(int i=0;i<mx;++i)f2[i]=n+1;
	for(int i=1;i<mx;++i){
		for(int j=0;j<vp;++j)if(i>>j&1){
			maxs(f1[i],rs[j][f1[i-(1<<j)]+1]);
			mins(f2[i],ls[j][f2[i-(1<<j)]-1]);
		}
	}
	for(int i=0;i<mx;++i)maxs(ml[f2[mx-1-i]-1],f1[i]+1);
	for(int i=0;i<=n;++i)maxs(ml[i+1],ml[i]);
	for(int i=1;i<=n;++i)puts(ml[rs[vp][i]]>=ls[vp][i]?"Possible":"Impossible");
	return 0;
}