#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e05 + 10;
const int MAXL = 20 + 5;
int N, V, lgv = 0;
int a[MAXN];
int sec[MAXN] = {0};
int extl[MAXN][MAXL] = {0}, extr[MAXN][MAXL] = {0};
int f[2][MAXN] = {0};
bool answer[MAXN] = {false};
void work(int p, int l, int r) {
  int n = lgv - 1;
  int limit = (1 << n) - 1;
  f[p][0] = l - 1;
  for (int state = 1; state <= limit; state++) {
    f[p][state] = l - 1;
    for (int j = 1; j <= n; j++)
      if (state & (1 << (j - 1))) {
        int pre = f[p][state ^ (1 << (j - 1))];
        f[p][state] = max(f[p][state], extr[pre + 1][j]);
      }
  }
}
void solve() {
  int n = lgv - 1;
  int cnt = 0;
  for (int i = 1; i <= N; i++) {
    if (extl[i][lgv] == extl[i - 1][lgv] && extr[i][lgv] == extr[i - 1][lgv]) {
      answer[i] = answer[i - 1];
      continue;
    }
    cnt++;
    if (cnt > lgv) {
      for (int j = 1; j <= N; j++) answer[j] = false;
      return;
    }
    int pl = extl[i][lgv], pr = extr[i][lgv];
    if (pl != 1) work(0, 1, pl - 1);
    if (pr != N) work(1, pr + 1, N);
    int limit = (1 << n) - 1;
    if (pl == 1)
      answer[i] = f[1][limit] >= N;
    else if (pr == N)
      answer[i] = f[0][limit] >= pl - 1;
    else {
      for (int state = 1; state <= limit; state++)
        if (f[0][state] >= pl - 1 && f[1][limit ^ state] >= N) {
          answer[i] = true;
          break;
        }
    }
  }
}
int getnum() {
  int num = 0;
  char ch = getchar();
  bool isneg = false;
  while (!isdigit(ch)) {
    if (ch == '-') isneg = true;
    ch = getchar();
  }
  while (isdigit(ch)) num = (num << 3) + (num << 1) + ch - '0', ch = getchar();
  return isneg ? -num : num;
}
int main() {
  N = getnum(), V = getnum();
  for (int i = 1; i <= N; i++) a[i] = getnum();
  for (int s = V; s > 0; s >>= 1) sec[++lgv] = s;
  sec[++lgv] = 0;
  reverse(sec + 1, sec + lgv + 1);
  for (int l = 1; l <= lgv; l++) {
    extl[0][l] = 1, extr[N + 1][l] = N;
    for (int i = 1; i <= N; i++) {
      if (i == 1)
        extl[i][l] = 1;
      else
        extl[i][l] = a[i] - a[i - 1] <= sec[l] ? extl[i - 1][l] : i;
    }
    for (int i = N; i >= 1; i--) {
      if (i == N)
        extr[i][l] = N;
      else
        extr[i][l] = a[i + 1] - a[i] <= sec[l] ? extr[i + 1][l] : i;
    }
  }
  solve();
  for (int i = 1; i <= N; i++)
    answer[i] ? puts("Possible") : puts("Impossible");
  return 0;
}
