#include <bits/stdc++.h>
using namespace std;
int n, v;
const int N = 600000;
int ai[N];
int L[20][N], R[20][N], cnt[N];
int Ld[N], Rd[N];
int main()
{
    scanf("%d%d", &n, &v);
    for (int i = 1; i <= n; ++ i) scanf("%d", &ai[i]);
    int c = 0;
    for (int i = 0, vv = v; vv != -1; ++ i, vv == 0? vv = -1: vv /= 2)
    {
        c ++;
        R[i][n] = n;
        for (int j = n - 1; j >= 1; -- j)
            if (ai[j + 1] - ai[j] <= vv)
                R[i][j] = R[i][j + 1];
            else
                R[i][j] = j;
        L[i][1] = 1;
        for (int j = 2; j <= n; ++ j)
            if (ai[j] - ai[j - 1] <= vv)
                L[i][j] = L[i][j - 1];
            else
                L[i][j] = j;
    }
    for (int i = 0; i < (1 << c); ++ i)
        Ld[i] = n + 1;
    for (int i = 0; i < (1 << c); ++ i)
        for (int j = 0; j <= c; ++ j)
            if (!(i & (1 << j)))
                Rd[i | (1 << j)] = max(Rd[i | (1 << j)], R[j][Rd[i] + 1]),
                Ld[i | (1 << j)] = min(Ld[i | (1 << j)], L[j][Ld[i] - 1]);
    for (int i = 0; i < (1 << c); ++ i) if (!(i & 1))
        if (R[0][Rd[i] + 1] + 1 >= Ld[((1 << c) - 2) ^ i])
        {
            cnt[L[0][Rd[i] + 1]] ++;
            cnt[R[0][Rd[i] + 1] + 1] --;
        }
    for (int i = 1; i <= n; ++ i) cnt[i] += cnt[i - 1];
    for (int i = 1; i <= n; ++ i) if (cnt[i]) puts("Possible"); else puts("Impossible");
}
