#include <algorithm>
#include <cstdio>
using namespace std;
const int N=200005;
int l[N][20],r[N][20],dpl[1<<18],dpr[1<<18],f[N],x[N],a[N];
int main(){
	int n,v,m=0;
	scanf("%d%d",&n,&v);
	for (;1<<m<=v;m++);
	for (int i=m;i;i--,v>>=1) a[i]=v;
	for (int i=1;i<=n;i++) scanf("%d",&x[i]);
	for (int i=0;i<=m;i++) l[0][i]=0,r[n+1][i]=n+1;
	for (int i=1;i<=n;i++)
		for (int j=0;j<=m;j++)
		if (x[i]-x[i-1]<=a[j]) l[i][j]=l[i-1][j];
			else l[i][j]=i-1;
	for (int i=n;i;i--)
		for (int j=0;j<=m;j++)
		if (x[i+1]-x[i]<=a[j]) r[i][j]=r[i+1][j];
			else r[i][j]=i+1;
	int L=1<<m;
	for (int i=0;i<L;i++){
		dpl[i]=1;dpr[i]=n;
		for (int j=0;j<m;j++)
		if ((i>>j)&1){
			dpl[i]=max(dpl[i],r[dpl[i^1<<j]][j]);
			dpr[i]=min(dpr[i],l[dpr[i^1<<j]][j]);
		}
	}
	for (int i=0;i<L;i++)
		f[dpr[i]]=max(f[dpr[i]],dpl[(L-1)^i]);
	for (int i=1;i<=n;i++) f[i]=max(f[i],f[i-1]);
	for (int i=1;i<=n;i++)
		if (f[r[i][m]-1]>l[i][m]) printf("Possible\n");
			else printf("Impossible\n");
}