#include <bits/stdc++.h>
#define inf 12345678
using namespace std;
inline int read()
{int x=0,f=0;
char c=getchar();
while (c<'0'||c>'9') 
{if (c=='-') f=1;
c=getchar();
}
while (c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
if (f) x=-x;
return x;
}
inline int max(int a,int b)
{return a>b?a:b;}
inline int min(int a,int b)
{return a<b?a:b;}
int l[21][200005],r[21][200005];
int a[200005],n,v,p[21],cnt=0;
int fl[262145],fr[262145],tot[21];
inline int calc(int pos)
{int lp=l[cnt+1][pos]-1,rp=r[cnt+1][pos]+1;
for (int i=0;i<(1<<cnt);i++)
{if (fl[i]>=lp&&fr[(1<<cnt)-1-i]<=rp) return 1;
}
return 0;
}
int main (){
	int i,j;
	n=read();v=read();
	for (i=1;i<=n;i++)
	{a[i]=read();}
	while (v) {p[++cnt]=v;v>>=1;}
	p[++cnt]=0;
	reverse(p+1,p+cnt+1);
	for (j=1;j<=cnt;j++)
	{int pos=1;
	while (pos<=n)
	{int sta=pos;
	while (pos<=n&&a[pos+1]-a[pos]<=p[j]) pos++;
	for (i=sta;i<=pos;i++) 
	{l[j][i]=sta;r[j][i]=pos;}
	pos++;tot[j]++;
	}
	l[j][n+1]=n+1;r[j][n+1]=n+1;
	l[j][0]=0;r[j][0]=0;
	}
	if (tot[cnt]>cnt)
	{for (i=1;i<=n;i++)
	{puts("Impossible");}
	return 0;
	}
	cnt--;
	for (i=0;i<(1<<cnt);i++)
	{fl[i]=0;fr[i]=n+1;
	for (j=1;j<=cnt;j++)
	{if (!((1<<(j-1))&i)) continue;
	fl[i]=max(fl[i],r[j][fl[(i^(1<<(j-1)))]+1]);
	fr[i]=min(fr[i],l[j][fr[(i^(1<<(j-1)))]-1]);
	}
	}
	int las;
	for (i=1;i<=n;i++)
	{if (l[cnt+1][i]==i) las=calc(i);
	puts(las?"Possible":"Impossible");
	}
	return 0;
}