#include <bits/stdc++.h>
using namespace std;
int l[20][200010], r[20][200010], f[500010], g[500010], mi[200010], x[200010];
int main() {
  int n, v, lim = 0;
  scanf("%d%d", &n, &v);
  while (v >> (lim + 1)) lim++;
  lim++;
  for (int i = 1; i <= n; i++) scanf("%d", &x[i]);
  for (int p = 0; p <= lim; p++) {
    l[p][0] = 1;
    for (int i = 1; i <= n; i++)
      l[p][i] = (x[i] - x[i - 1] <= (v >> p)) ? l[p][i - 1] : i;
    r[p][n + 1] = n;
    for (int i = n; i >= 1; i--)
      r[p][i] = (x[i + 1] - x[i] <= (v >> p)) ? r[p][i + 1] : i;
  }
  for (int s = 0; s < (1 << (lim + 1)); s++) g[s] = n + 1;
  for (int s = 0; s < (1 << (lim + 1)); s++)
    for (int i = 0; i <= lim; i++)
      if (!(s & (1 << i))) {
        f[s | (1 << i)] = max(f[s | (1 << i)], r[i][f[s] + 1]);
        g[s | (1 << i)] = min(g[s | (1 << i)], l[i][g[s] - 1]);
      }
  for (int i = 0; i <= n; i++) mi[i] = n + 2;
  for (int i = 0; i < (1 << (lim + 1)); i += 2)
    mi[f[i]] = min(mi[f[i]], g[(1 << (lim + 1)) - 2 - i]);
  for (int i = 1; i <= n; i++)
    puts((mi[l[0][i] - 1] <= r[0][i] + 1) ? "Possible" : "Impossible");
}
