#include<cstdio>
#include<algorithm>
#include<cstring>
#define MN 200005
using namespace std;
int n,v,len,tt,a[MN],l[25][MN],r[25][MN],f[1<<18],g[1<<18];
int main(){
	scanf("%d%d",&n,&v);
	while(v>>len)len++;
	for(int i=1;i<=n;i++)scanf("%d",&a[i]);
	for(int i=0;i<=len;i++){
		l[i][1]=1;r[i][n]=n;
		for(int j=2;j<=n;j++)if(a[j]-a[j-1]<=(v>>i))l[i][j]=l[i][j-1];else l[i][j]=j;
		for(int j=n-1;j>=1;j--)if(a[j+1]-a[j]<=(v>>i))r[i][j]=r[i][j+1];else r[i][j]=j;
	}g[0]=n+1;
	for(int i=0;i<(1<<len);i++){
		g[i]=n+1;
		for(int j=0;j<len;j++)if(i&(1<<j)){
			f[i]=max(f[i],r[len-j][min(f[i-(1<<j)]+1,n)]);
			g[i]=min(g[i],l[len-j][max(g[i-(1<<j)]-1,1)]);
		}
	}bool pd=false;
	for(int i=1;i<=n;i++)if(l[0][i]!=l[0][i-1])tt++;
	if(tt>20){for(int i=1;i<=n;i++)puts("Impossible");return 0;}
	for(int i=1,j;i<=n;i++){
		if(l[0][i]!=l[0][i-1]){
			for(j=0;j<(1<<len);j++)if(f[j]>=l[0][i]-1&&g[(1<<len)-j-1]<=r[0][i]+1){pd=true;break;}
			if(j==(1<<len))pd=false;
		}printf("%s\n",pd?"Possible":"Impossible");
	}
}