#include<cstdio>
#include<algorithm>
#define N_ 201000
using namespace std;
int n, V, w[N_], m;
int C[20][N_], L[20], PP[30];
int BE[20][N_], ED[20][N_];
int D1[1048576], D2[1048576];
int main(){
    int i, j;
    scanf("%d%d",&n,&V);
    for(i=1;i<=n;i++)scanf("%d",&w[i]);
    L[0] = V;
    for(i=1;;i++){
        L[i]=L[i-1]/2;
        if(!L[i])break;
    }
    m = i+1;
    for(i=0;i<m;i++){
        int c = 0;
        for(j=1;j<=n;j++){
            if(j==1 || w[j]-w[j-1] > L[i])c++;
            C[i][j] = c;
        }
        for(j=1;j<=c;j++)BE[i][j]=1e9,ED[i][j]=0;
        for(j=1;j<=n;j++){
            BE[i][C[i][j]] = min(BE[i][C[i][j]],j);
            ED[i][C[i][j]] = max(ED[i][C[i][j]],j);
        }
    }
    if(C[0][n] > m){
        for(i=1;i<=n;i++)puts("Impossible");
        return 0;
    }
    for(i=0;i<(1<<m);i++)D2[i] = n+1;
    for(i=0;i<(1<<m);i++){
        for(j=0;j<m;j++){
            if(i&(1<<j))continue;
            if(D1[i]!=n)D1[i|(1<<j)] = max(D1[i|(1<<j)], ED[j][C[j][D1[i]+1]]);
            else D1[i|(1<<j)] = n;
            if(D2[i]!=1)D2[i|(1<<j)] = min(D2[i|(1<<j)], BE[j][C[j][D2[i]-1]]);
            else D2[i] = 1;
        }
    }
    for(i=1;i<=C[0][n];i++){
        int b = BE[0][i], e = ED[0][i];
        for(j=0;j<(1<<m);j++){
            if(j&1)continue;
            int t = (1<<m) - 2 - j;
            if(D1[j] + 1 >= b && D2[t] - 1 <= e)PP[i] = 1;
        }
    }
    for(i=1;i<=n;i++){
        if(PP[C[0][i]])puts("Possible");
        else puts("Impossible");
    }
}