#include <bits/stdc++.h>
using namespace std;
int s[524289][20], t[524289][20];
int dpl[524289], dpr[524289], tag[524289], n, v, x[524289], y[20], mx, p;
int main() {
  scanf("%d%d", &n, &v);
  do {
    y[p++] = v;
  } while (v /= 2);
  for (int i = 1; i <= n; ++i) scanf("%d", &x[i]);
  for (int i = 0; i < p; ++i)
    for (int j = 1, k, l; j <= n; j = k) {
      for (k = j + 1; k <= n && x[k] - x[k - 1] <= y[i]; k++)
        ;
      for (l = j; l < k; l++) s[l][i] = k - 1, t[l][i] = j;
    }
  dpl[0] = 0, dpr[0] = n + 1;
  for (int i = 1; i < (1 << p); i++)
    if (~i & 1) {
      dpl[i] = 1, dpr[i] = n;
      for (int j = 0; j < p; ++j)
        if (i & (1 << j))
          dpl[i] = max(
              dpl[i], dpl[i ^ (1 << j)] == n ? n : s[dpl[i ^ (1 << j)] + 1][j]),
          dpr[i] = min(
              dpr[i], dpr[i ^ (1 << j)] == 1 ? 1 : t[dpr[i ^ (1 << j)] - 1][j]);
    }
  dpl[0] = s[1][0], dpr[0] = t[n][0];
  for (int i = 1; i < (1 << p); ++i)
    if (~i & 1) {
      int l = dpl[i], r = dpr[(1 << p) - 1 - i - 1];
      if (l + 1 >= r)
        tag[1]++;
      else if (s[l + 1][0] + 1 >= r)
        tag[t[l + 1][0]]++, tag[s[l + 1][0] + 1]--;
    }
  for (int i = 1; i <= n; ++i) {
    mx += tag[i];
    if (mx > 0)
      puts("Possible");
    else
      puts("Impossible");
  }
}
