#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
#define Rep(i,a,b) for(register int i=(a);i<=int(b);++i)
#define dis(i,a,b) for(register int i=(a);i>=int(b);--i)
#define rep(i,a,b) for(register int i=(a);i<int(b);++i)
#define mem(x,v) memset(x,v,sizeof(x))
#define gc getchar
#define pc putchar
inline ll rd(){
    ll x=0,f=1;char c=gc();
    for(;!isdigit(c);c=gc())if(c=='-')f=-1;
    for(;isdigit(c);c=gc())x=(x<<1)+(x<<3)+(c^48);
    return x*f;
}
void write(ll x){if(x<0)x=-x,pc('-');if(x>=10)write(x/10);putchar(x%10+'0');}
void writeln(ll x){write(x);puts("");}
const int maxn = 2e5+233;
int L[20][maxn],R[20][maxn];
int f[maxn],g[maxn];
int ans[maxn]; 
int n,V,tmp,x[maxn],v[21];
int main(){
	n = rd(),V = tmp = rd();
	Rep(i,1,n) x[i] = rd();
	tmp /= 2;
	while(tmp){
		v[++v[0]] = tmp;
		tmp /= 2;
	}
	v[++v[0]] = 0;
	Rep(d,1,v[0]){
		for(int i=1,j=-1;i<=n;i=j+1){
			for(j=i+1;j<=n && x[j]-x[j-1]<=v[d];j++);j--;
//			printf("[%d %d]\n",i,j);
			Rep(k,i,j){
				L[d][k] = i;
				R[d][k] = j;
			}
		}R[d][n+1] = n;L[d][0] = 1;
	}
	
	for(int i=1,j=-1;i<=n;i=j+1){
		for(j=i+1;j<=n && x[j]-x[j-1]<=V;j++);j--;
//		printf("[%d %d][%d %d]\n",i,j,x[j]-x[i],x[j+1]-x[i]);
		Rep(k,i,j){
			L[0][k] = i;
			R[0][k] = j;
//			printf("L[%d][%d] = %d\n",V,k,L[0][k]);
		}
	}R[0][n+1] = n;L[0][0] = 1;
	rep(i,0,1<<v[0]) f[i] = 0;
	rep(i,0,1<<v[0]){
		for(int j=1;j<=v[0];++j){
			if(i>>(j-1)&1^1){
				f[i|(1<<(j-1))] = max(f[i|(1<<(j-1))],R[j][f[i]+1]);
			}//如果不包括，那么可以选择 
		}
	}
	rep(i,0,1<<v[0]) g[i] = n+1;
	rep(i,0,1<<v[0]){
		for(int j=1;j<=v[0];++j){
			if(i>>(j-1)&1^1){
				g[i|(1<<(j-1))] = min(g[i|(1<<(j-1))],L[j][g[i]-1]);
			}
		}
	}
//	rep(i,0,1<<v[0]){
//		printf("[%d%d%d%d%d] : %d,%d\n",i/16%2,i/8%2,i/4%2,i/2%2,i%2,f[i],g[i]);
//	}
	rep(i,0,1<<v[0]){
		int j=((1<<v[0])-1)^i;
//		printf("[%d %d]\n",i,j);
		int pos = f[i]+1;
	//	printf("[%d %d]\n",f[i],g[j]);
//		if(f[i]+1 >= g[j]){
//			printf("[%d %d]\n",f[i],g[j]);
//		} else
		assert(f[i]+1 <= g[j]);
		if(L[0][pos] <= f[i]+1 && g[j]-1 <= R[0][pos]){
			ans[L[0][pos]]++;
			ans[R[0][pos]+1]--;
		}//区间可行 
	}
	Rep(i,1,n) ans[i] += ans[i-1];
	Rep(i,1,n){
//		printf("{%d %d}\n",L[0][i],R[0][i]);
		if(ans[i]) puts("Possible");
			  else puts("Impossible");
	}
	return 0;
}
/*
5 3
-4 0 1 2 6

11 12
*/
