#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 7;
int n, k, a[N], val[19];
int l[19][N], r[19][N];
int pref[1 << 19], suf[1 << 19];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> k;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
  }
  int bit = 0, sv = k;
  while (sv > 0) {
    val[bit++] = sv;
    sv /= 2;
  }
  val[bit++] = 0;
  int pos = 1;
  for (int i = 0; i < bit; i++) {
    pos = 1;
    for (int j = 1; j <= n; j++) {
      if (pos < j) pos = j;
      while (pos < n && a[pos + 1] - a[pos] <= val[i]) pos++;
      r[i][j] = pos;
    }
    pos = n;
    for (int j = n; j >= 1; j--) {
      if (pos > j) pos = j;
      while (pos > 1 && a[pos] - a[pos - 1] <= val[i]) pos--;
      l[i][j] = pos;
    }
  }
  for (int mask = 0; mask < (1 << bit); mask++) suf[mask] = n + 1;
  for (int mask = 0; mask < (1 << bit); mask++) {
    for (int i = 0; i < bit; i++) {
      if ((mask & (1 << i))) continue;
      pref[mask ^ (1 << i)] =
          max(pref[mask ^ (1 << i)], r[i][min(n, pref[mask] + 1)]);
      suf[mask ^ (1 << i)] =
          min(suf[mask ^ (1 << i)], l[i][max(1, suf[mask] - 1)]);
    }
  }
  int msk = (1 << bit) - 2;
  for (int i = 1; i <= n; i++) {
    if (pref[msk] + 1 >= l[0][i] && suf[msk] - 1 <= r[0][i])
      cout << "Possible\n";
    else
      cout << "Impossible\n";
  }
}
