#include <bits/stdc++.h>
using namespace std;
int n;
int pos[500008];
struct afd {
  int bel[500008];
  int l[500008], r[500008];
  void init(int v) {
    for (int i = 1; i <= n; i++) {
      if (i == 1 or pos[i] - pos[i - 1] > v)
        bel[i] = i, l[i] = r[i] = i;
      else
        bel[i] = bel[i - 1], r[bel[i]] = i;
    }
  }
} v2[21];
int l = 0;
int v;
void fuckoff() {
  while (n--) puts("Impossible");
  exit(0);
}
int fl[500008], fr[500008];
void chkmin(int &x, int y) { x = min(x, y); }
void chkmax(int &x, int y) { x = max(x, y); }
int main() {
  scanf("%d%d", &n, &v);
  for (int i = 1; i <= n; i++) scanf("%d", &pos[i]);
  while (v) v2[l++].init(v), v /= 2;
  v2[l++].init(v), v /= 2;
  int cnt = 0;
  for (int i = 1; i <= n; i++)
    if (v2[0].bel[i] == i) cnt++;
  if (cnt > l) fuckoff();
  for (int ii = 1; ii <= n; ii++) {
    if (v2[0].bel[ii] == ii) {
      int el = v2[0].l[ii], er = v2[0].r[ii];
      memset(fl, 0x3f, sizeof fl);
      memset(fr, 0, sizeof fr);
      fl[1] = el;
      fr[1] = er;
      for (int mask = 1; mask < (1 << l); mask++) {
        if (!(mask & 1) or fl[mask] > n) continue;
        for (int i = 1; i < l; i++) {
          if (mask & (1 << i)) continue;
          int x = v2[i].bel[fl[mask] - 1];
          if (!x)
            chkmin(fl[mask | (1 << i)], fl[mask]);
          else
            chkmin(fl[mask | (1 << i)], v2[i].l[x]);
        }
      }
      for (int mask = 1; mask < (1 << l); mask++) {
        if (!(mask & 1) or !fr[mask]) continue;
        for (int i = 1; i < l; i++) {
          if (mask & (1 << i)) continue;
          int x = v2[i].bel[fr[mask] + 1];
          if (!x)
            chkmax(fr[mask | (1 << i)], fr[mask]);
          else
            chkmax(fr[mask | (1 << i)], v2[i].r[x]);
        }
      }
      int flag = 0;
      for (int mask = 0; mask < (1 << l); mask++)
        if (mask & 1)
          if (fl[mask] <= 1 and fr[(((1 << l) - 1) ^ mask) | 1] >= n) flag = 1;
      if (flag)
        for (int i = el; i <= er; i++) puts("Possible");
      else
        for (int i = el; i <= er; i++) puts("Impossible");
    }
  }
  return 0;
}
