#include<bits/stdc++.h>
using namespace std;
int l[21][530000],r[21][530000],f[530000],g[530000],mi[530000],x[530000];
int main()
{
	int n,v,lim=0;scanf("%d%d",&n,&v);while (v>>(lim+1)) lim++;lim++;cerr<<(1<<(lim+1))<<endl;
	for (int i=1;i<=n;i++) scanf("%d",&x[i]);
	for (int p=0;p<=lim;p++)
	{
		l[p][0]=1;for (int i=1;i<=n;i++) l[p][i]=(x[i]-x[i-1]<=(v>>p))?l[p][i-1]:i;
		r[p][n+1]=n;for (int i=n;i>=1;i--) r[p][i]=(x[i+1]-x[i]<=(v>>p))?r[p][i+1]:i;
	}
	for (int s=0;s<(1<<(lim+1));s++) g[s]=n+1;
	for (int s=0;s<(1<<(lim+1));s++)
	for (int i=0;i<=lim;i++) if (!(s&(1<<i)))
	{
		f[s|(1<<i)]=max(f[s|(1<<i)],r[i][f[s]+1]);
		g[s|(1<<i)]=min(g[s|(1<<i)],l[i][g[s]-1]);
	}
	for (int i=0;i<=n;i++) mi[i]=n+2;
	for (int i=0;i<(1<<(lim+1));i+=2) mi[f[i]]=min(mi[f[i]],g[(1<<(lim+1))-2-i]);
	for (int i=n-1;i>=0;i--) mi[i]=min(mi[i],mi[i+1]);
	for (int i=1;i<=n;i++) puts((mi[l[0][i]-1]<=r[0][i]+1)?"Possible":"Impossible");
	//for (int i=1;i<=n;i++) printf("%d %d %d\n",l[0][i],r[0][i],mi[i]);
}