#include <bits/stdc++.h>
const int M = 18, N = 2e5 + 5;
using namespace std;
int n, v[M + 5], x[N], L[M + 1][N], R[M + 1][N], dpl[N], dpr[N], bit[N], m;
int main() {
  scanf("%d%d", &n, &v[0]);
  for (int i = 1; i <= n; ++i) scanf("%d", &x[i]);
  for (m = 1;; m++) {
    v[m] = v[m - 1] / 2;
    if (!v[m]) break;
  }
  for (int j = 0; j <= m; ++j) {
    L[j][1] = L[j][0] = 1;
    for (int i = 2; i <= n; ++i)
      L[j][i] = (x[i] - x[i - 1] <= v[j] ? L[j][i - 1] : i);
    R[j][n] = R[j][n + 1] = n;
    for (int i = n - 1; i; --i)
      R[j][i] = (x[i + 1] - x[i] <= v[j] ? R[j][i + 1] : i);
  }
  int st = (1 << m) - 1;
  dpl[0] = 0, dpr[0] = n + 1;
  for (int i = 1; i <= st; ++i) {
    dpl[i] = 0, dpr[i] = n + 1;
    for (int j = 1; j <= m; ++j)
      if ((i >> (j - 1)) & 1) {
        dpl[i] = max(dpl[i], R[j][dpl[i ^ (1 << (j - 1))] + 1]);
        dpr[i] = min(dpr[i], L[j][dpr[i ^ (1 << (j - 1))] - 1]);
      }
  }
  for (int i = 0; i <= n + 1; ++i) bit[i] = -n;
  for (int i = 0; i <= st; ++i) bit[dpr[i]] = max(bit[dpr[i]], dpl[st ^ i]);
  for (int i = 1; i <= n + 1; ++i) bit[i] = max(bit[i], bit[i - 1]);
  for (int i = 1; i <= n; ++i)
    puts((bit[R[0][i] + 1] >= L[0][i] - 1) ? "Possible" : "Impossible");
  return 0;
}
