#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 5;
char buf[1 << 12], *pp1 = buf, *pp2 = buf, nc;
int ny;
inline char gc() {
  return pp1 == pp2 &&
                 (pp2 = (pp1 = buf) + fread(buf, 1, 1 << 12, stdin), pp1 == pp2)
             ? EOF
             : *pp1++;
}
inline int read() {
  int x = 0;
  for (ny = 1; nc = gc(), (nc < 48 || nc > 57) && nc != EOF;)
    if (nc == 45) ny = -1;
  if (nc < 0) return nc;
  for (x = nc - 48; nc = gc(), 47 < nc && nc < 58 && nc != EOF;
       x = (x << 3) + (x << 1) + (nc ^ 48))
    ;
  return x * ny;
}
int n, t, v, len[20], p[MAXN], Fl[1 << 18], Fr[1 << 18], pl[20][MAXN],
    pr[20][MAXN], S, a[MAXN];
vector<int> L[20], R[20];
int main() {
  n = read(), v = read(), t = log2(v) + 1, S = (1 << t) - 1;
  for (int i = 1; i <= n; i++) p[i] = read();
  for (int i = 0; i <= t; i++) {
    if (i)
      len[i] = len[i - 1] / 2;
    else
      len[i] = v;
    for (int l = 1, r; l <= n; l = r + 1) {
      r = l;
      for (; r < n && p[r + 1] - p[r] <= len[i]; r++)
        ;
      for (int j = l; j <= r; j++) pl[i][j] = l, pr[i][j] = r;
      L[i].push_back(l), R[i].push_back(r);
    }
  }
  for (int sta = 0; sta <= S; sta++) Fr[sta] = n + 1;
  for (int i = 1; i <= t; i++)
    Fl[1 << i - 1] = (*R[i].begin()), Fr[1 << i - 1] = (*--L[i].end());
  for (int sta = 1; sta <= S; sta++)
    for (int j = 1; j <= t; j++)
      if (~sta >> (j - 1) & 1) {
        int t = sta | (1 << j - 1),
            pos = upper_bound(L[j].begin(), L[j].end(), Fl[sta] + 1) -
                  L[j].begin() - 1;
        Fl[t] = max(Fl[t], R[j][pos]);
        pos = lower_bound(R[j].begin(), R[j].end(), Fr[sta] - 1) - R[j].begin();
        Fr[t] = min(Fr[t], L[j][pos]);
      }
  for (int s = 0; s <= S; s++) {
    int ed =
            upper_bound(L[0].begin(), L[0].end(), Fl[s] + 1) - L[0].begin() - 1,
        st =
            lower_bound(R[0].begin(), R[0].end(), Fr[S ^ s] - 1) - R[0].begin();
    if (st <= ed) a[st]++, a[ed + 1]--;
  }
  for (int i = 0; i < L[0].size(); i++) {
    a[i] += a[i - 1];
    for (int j = L[0][i]; j <= R[0][i]; j++)
      puts(a[i] ? "Possible" : "Impossible");
  }
  return 0;
}
