#include<iostream>
#include<cstdio>
#include<cstring>
#define N 300010
using namespace std;
int num[N],val[64];
int l[32][N],r[32][N];
int f[1<<22],g[1<<22];
int main()
{
	int n,m;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++) scanf("%d",&num[i]);
	int tot=0,res=m;
	while(res)
	{
		val[tot++]=res>>1;
		res>>=1;
	}
	val[tot]=m;
	for(int i=0;i<=tot;i++)
	{
		l[i][1]=1;
		for(int j=2;j<=n;j++)
		{
			if(num[j]-num[j-1]<=val[i]) l[i][j]=l[i][j-1];
			else l[i][j]=j;
		}
	}
	int sum=0;
	for(int i=0;i<=tot;i++)
	{
		r[i][n]=n;
		for(int j=n-1;j>=1;j--)
		{
			if(num[j+1]-num[j]<=val[i]) r[i][j]=r[i][j+1];
			else
			{
				r[i][j]=j;
				if(i==tot) sum++;
			}
		}
	}
	if(sum>tot){for(int i=1;i<=n;i++)puts("Impossible");return 0;}
	int p=1<<tot;
    for(int s=0;s<p;s++) g[s]=n+1;
	for(int s=0;s<p;s++)
        for(int i=0;i<=tot;i++)
            if(!((s>>i)&1))
            {
                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=1;i<=n;i=r[tot][i]+1)
    {
        bool ok=false;
        for(int s=0;s<p && !ok;s++) if(f[s]>=i-1 && g[(p-1)-s]<=r[tot][i]+1) ok=true;
        for (int j=i;j<=r[tot][i];j++)
        {
            if(ok) puts("Possible");
            else puts("Impossible");
        }
    }
	return 0;
}
