#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007;
const long long inf = mod * mod;
const long long d2 = 500000004;
const double EPS = 1e-6;
const double PI = acos(-1.0);
int ABS(int a) { return max(a, -a); }
long long ABS(long long a) { return max(a, -a); }
long long x[210000];
int sa[210000];
int nx_L[19][210000];
int nx_R[19][210000];
int d[20];
int L[1 << 19];
int R[1 << 19];
pair<int, int> p[1 << 19];
int main() {
  int a, b;
  scanf("%d%d", &a, &b);
  for (int i = 0; i < a; i++) {
    scanf("%lld", x + i);
  }
  d[0] = b;
  int n = 1;
  for (int i = 0; d[i]; i++) {
    d[i + 1] = d[i] / 2;
    n = i + 2;
  }
  for (int i = 0; i < n; i++) {
    int to = a;
    for (int j = a - 1; j >= 0; j--) {
      nx_L[i][j] = to;
      if (j && x[j] - x[j - 1] > d[i]) to = j;
    }
  }
  for (int i = 0; i < n; i++) {
    int to = a;
    for (int j = a - 1; j >= 0; j--) {
      nx_R[i][j] = to;
      if (j && x[a - j] - x[a - 1 - j] > d[i]) to = j;
    }
  }
  for (int i = 0; i < (1 << n); i++) {
    int at = L[i];
    for (int j = 0; j < n; j++) {
      if (i & (1 << j)) continue;
      int to = nx_L[j][at];
      L[i + (1 << j)] = max(L[i + (1 << j)], to);
    }
  }
  for (int i = 0; i < (1 << n); i++) {
    int at = R[i];
    for (int j = 0; j < n; j++) {
      if (i & (1 << j)) continue;
      int to = nx_R[j][at];
      R[i + (1 << j)] = max(R[i + (1 << j)], to);
    }
  }
  int sz = 0;
  for (int i = 0; i < (1 << n); i++) {
    if (i & 1)
      ;
    else {
      p[sz++] = make_pair(L[i], i);
    }
  }
  std::sort(p, p + sz);
  set<pair<int, int> > S;
  for (int i = 0; i < (1 << n); i++) {
    if (i & 1)
      ;
    else {
      S.insert(make_pair(R[i], i));
    }
  }
  int at = 0;
  for (int i = 0; i < a; i++) {
    int lq = a - nx_R[0][a - 1 - i];
    int rq = a - nx_L[0][i];
    while (at < sz && p[at].first < lq) {
      S.erase(make_pair(R[p[at].second], p[at].second));
      at++;
    }
    if (S.size()) {
      pair<int, int> tp = *(S.rbegin());
      if (tp.first >= rq)
        printf("Possible\n");
      else
        printf("Impossible\n");
    } else {
      if (at < sz && rq == 0)
        printf("Possible\n");
      else
        printf("Impossible\n");
    }
  }
}
