#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,m,mx,s,i,j,cnt,sz,la,a[500010],b[500010],c[500010][2],hd[21][200010],
pr[21][200010],f[500010],g[500010],d[500010];
int main(){
	scanf("%d%d",&n,&m);la=m;
	for(i=1;i<=n;i++)scanf("%d",&a[i]);
	m/=2;
	while(1){
		b[cnt++]=m;
		if(!m)break;m/=2;
	}
	mx=1<<cnt;
	for(j=0;j<cnt;j++){
		//printf("%d\n",b[j]);
		hd[j][n]=n;hd[j][n+1]=n+1;
		for(i=n-1;i;i--){
			if(a[i+1]-a[i]>b[j])hd[j][i]=i;
			 else hd[j][i]=hd[j][i+1];
		}
		pr[j][1]=1;
		for(i=2;i<=n;i++){
			if(a[i]-a[i-1]>b[j])pr[j][i]=i;
			 else pr[j][i]=pr[j][i-1];
			//printf("%d %d %d\n",i,pr[j][i],hd[j][i]);
		}
		//puts("");
	}
	c[sz=1][0]=1;
	for(i=2;i<=n;i++){
		if(a[i]-a[i-1]>la)c[sz][1]=i-1,c[++sz][0]=i;
	}
	c[sz][1]=n;
	//printf("%d\n",sz);
	if(sz>20){
		for(i=1;i<=n;i++)puts("Impossible");
		return 0;
	}
	memset(g,44,sizeof(g));
	g[0]=n+1;
	for(s=0;s<mx;s++){
		//printf("%d %d %d\n",s,f[s],g[s]);
		for(i=0;i<cnt;i++)if(!(s&(1<<i))){
			f[s|(1<<i)]=min(n,max(f[s|(1<<i)],hd[i][f[s]+1]));
			g[s|(1<<i)]=max(1,min(g[s|(1<<i)],pr[i][g[s]-1]));
		}
	}
	//memset(g,44,sizeof(g));
	for(i=1;i<=sz;i++)
	 for(s=0;s<mx;s++)if(f[s]>=c[i][0]-1&&g[(mx-1)^s]<=c[i][1]+1)d[c[i][0]]++,d[c[i][1]+1]--;
	for(i=1;i<=n;i++)d[i]+=d[i-1];
	for(i=1;i<=n;i++)if(d[i])puts("Possible");
	 else puts("Impossible");
}