#include <bits/stdc++.h>
#define pb push_back
#define cmin(a,b) (a>b?a=b:a)
#define cmax(a,b) (a<b?a=b:a)
#define mem(a,k) memset(a,k,sizeof(a))
#define lop(i,s,t) for(int i=s;i<(t);++i)
#define rep(i,s,t) for(int i=s;i<=(t);++i)
#define dec(i,s,t) for(int i=s;i>=(t);--i)
#define fore(i,v) for(int i=g[v],d=es[i].d;i;i=es[i].nxt,d=es[i].d)
using namespace std;

void read(int &x){ scanf("%d",&x); }

const int N=5e5+50,K=20,oo=1e9;

int suc[N],n,m,v,a[K],x[N],frw[1<<K],bkw[1<<K],R[K][N],L[K][N]; 

int main(int argc,char *argv[]){
#ifdef CURIOUSCAT
	freopen("dat.in","r",stdin);
	//freopen("my.out","w",stdout);
#endif
	read(n),read(v);
	rep(i,1,n){
		read(x[i]);  
	}
	//Range a[0,m]
	for(;v;v>>=1)a[m++]=v;
	rep(k,0,m){
		L[k][0]=1,L[k][1]=1;
		rep(i,2,n)L[k][i]=x[i]-x[i-1]<=a[k]?L[k][i-1]:i;
		R[k][n+1]=n,R[k][n]=n;
		dec(i,n-1,1)R[k][i]=x[i+1]-x[i]<=a[k]?R[k][i+1]:i;
	}
	fill(frw,frw+(1<<m),0); 
	fill(bkw,bkw+(1<<m),n+1); 
	lop(s,0,(1<<m)){
		lop(i,0,m)if((s>>i&1)^1){
			cmax(frw[s+(1<<i)],R[i+1][frw[s]+1]);
			cmin(bkw[s+(1<<i)],L[i+1][bkw[s]-1]);
		}
	}
	lop(s,0,(1<<m)){
		int p=((1<<m)-1)^s;
		int i=frw[s],j=bkw[p];
		if(R[0][i+1]>=j-1)suc[R[0][i+1]]=true;
	}
	rep(i,1,n)puts(suc[R[0][i]]?"Possible":"Impossible");
	return 0;
}
