#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define ll long long
ll n,v,a[2000005],sta[2000005],l[20][400005],r[20][400005],L[2000005],R[2000005],ans[2000005],top;
int main(){
	scanf("%lld%lld",&n,&v);
	for(ll i=1;i<=n;i++) scanf("%lld",&a[i]);
	ll m=v;
	while(m) m>>=1,sta[top++]=m;
	sta[top]=v;
	for(ll i=0;i<=top;i++){
		l[i][1]=1;r[i][n]=n;
		for(ll t=2;t<=n;t++) l[i][t]=(a[t]-a[t-1]<=sta[i])?l[i][t-1]:t;
		for(ll t=n-1;t>=1;t--) r[i][t]=(a[t+1]-a[t]<=sta[i])?r[i][t+1]:t;
	}
	for(ll i=0;i<1<<top;i++) R[i]=n+1;
	for(ll i=0;i<1<<top;i++){
		for(ll t=0;t<=top;t++){
			if((i>>t)&1)continue;
			L[(1<<t)|i]=max(L[(1<<t)|i],r[t][L[i]+1]);
			R[(1<<t)|i]=min(R[(1<<t)|i],l[t][R[i]-1]);
		}
	}
	for(ll i=1;i<=n;i++){
		ll fg=0;
		for(ll t=0;t<1<<top;t++){
			ll ano=((1<<top)-1)^t;
			if(L[t]>=i-1&&R[ano]<=r[top][i]+1){fg=1;break;}
		}
		for(ll t=i;t<=r[top][i];t++) ans[t]=fg;
		i=r[top][i];
	}
	for(ll i=1;i<=n;i++){
		if(ans[i]) printf("Possible\n");
		else printf("Impossible\n");
	}
}