#include<bits/stdc++.h>

using namespace std;

inline int read()
{
	int x=0,f=1;char ch=getchar();
	while(ch<'0' || '9'<ch){if(ch=='-')f=-1;ch=getchar();}
	while('0'<=ch && ch<='9')x=x*10+(ch^48),ch=getchar();
	return x*f;
}

inline void chkmax(int &a,int b){if(a<b)a=b;}
inline void chkmin(int &a,int b){if(a>b)a=b;}

#define guo cerr<<"guo"<<endl
const int N=2e5+9;
const int K=22;
const int M=1<<K;

int n,m,v;
int x[N];
int vs[K],vtop;
int pre[K][N],suf[K][N];
int pr[M],su[M],mp[M];

int main()
{
	if(fopen("vj.in","r"))
	{
		freopen("vj.in","r",stdin);
		freopen("vj.out","w",stdout);
	}

	n=read();v=read();
	for(int i=1;i<=n;i++)
		x[i]=read();
	for(int a=v>>1;vs[vtop++]=a;a>>=1);
	m=1<<vtop;vs[vtop]=v;

	for(int k=0;k<=vtop;k++)
	{
		pre[k][0]=0,suf[k][n+1]=n+1;
		for(int i=1,j=1;i<=n;i=j+1)
		{
			for(j=i;j+1<=n && x[j+1]-x[j]<=vs[k];j++);
			for(int l=i;l<=j;l++)
				pre[k][l]=i,suf[k][l]=j;
		}
	}

	for(int i=0;i<m;i++)
		su[i]=n+1;
	for(int i=1;i<m;i++)
		for(int j=0;j<vtop;j++)
			if(i&(1<<j))
			{
				chkmin(su[i],pre[j][su[i^(1<<j)]-1]);
				chkmax(pr[i],suf[j][pr[i^(1<<j)]+1]);
			}

	for(int i=0;i<m;i++)
		chkmax(mp[su[m-1-i]-1],pr[i]+1);
	for(int i=0;i<=n;i++)
		chkmax(mp[i+1],mp[i]);

	for(int i=1;i<=n;i++)
	{
		if(mp[suf[vtop][i]]>=pre[vtop][i])
			puts("Possible");
		else
			puts("Impossible");
	}

	return 0;

}
