#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int N=200005;
int n,V,x[N],lt[N][21],rt[N][21],f[1100000],g[1100000],num,i,j,k,w[N];
int main()
{
	scanf("%d%d",&n,&V);
	for(i=1;i<=n;++i)
		scanf("%d",x+i);
	for(i=0;;++i)
	{
		lt[0][i]=lt[1][i]=1;
		for(j=2;j<=n;++j)
			if(x[j]-x[j-1]<=(V>>i))
				lt[j][i]=lt[j-1][i];
			else
				lt[j][i]=j;
		rt[n+1][i]=rt[n][i]=n;
		for(j=n-1;j>=1;--j)
			if(x[j+1]-x[j]<=(V>>i))
				rt[j][i]=rt[j+1][i];
			else
				rt[j][i]=j;
		num=i;
		if(!(V>>i))
			break;
	}
	f[0]=0;
	for(i=1;i<(1<<num);++i)
		for(j=1;j<=num;++j)
			if(i>>(j-1)&1)
				f[i]=max(f[i],rt[f[i^(1<<(j-1))]+1][j]);
	g[0]=n+1;
	for(i=1;i<(1<<num);++i)
	{
		g[i]=n+1;
		for(j=1;j<=num;++j)
			if(i>>(j-1)&1)
				g[i]=min(g[i],lt[g[i^(1<<(j-1))]-1][j]);
	}
	for(i=0;i<=n+1;++i)
		w[i]=-1;
	for(i=0;i<(1<<num);++i)
		w[g[i]]=max(w[g[i]],f[((1<<num)-1)^i]);
	for(i=1;i<=n+1;++i)
		w[i]=max(w[i],w[i-1]);
	for(i=1;i<=n;++i)
		if(w[rt[i][0]+1]>=lt[i][0]-1)
			puts("Possible");
		else
			puts("Impossible");
	return 0;
}
