#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void read(T& num) {
  num = 0;
  T f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') num = num * 10 + ch - '0', ch = getchar();
  num *= f;
}
inline int getgcd(int x, int y) {
  if (!x) return y;
  return getgcd(y % x, x);
}
inline int power(int x, int k, int p) {
  int res = 1;
  for (; k; k >>= 1, x = (long long)x * x % p)
    if (k & 1) res = (long long)res * x % p;
  return res;
}
const double pi = acos(-1);
inline void judge() { freopen("input.txt", "r", stdin); }
const int maxn = 2e5 + 5;
int n, m;
int V[20], x[maxn], R[maxn][20], L[maxn][20];
int S1[maxn], S2[maxn];
int minL[maxn];
int main() {
  read(n);
  read(V[0]);
  for (int(i) = (1); (i) <= (n); (i)++) read(x[i]);
  while (V[m]) V[m + 1] = V[m] / 2, m++;
  m++;
  for (int(i) = (0); (i) < (m); (i)++) {
    R[n + 1][i] = n;
    R[n][i] = n;
    for (int(j) = (n - 1); (j) >= (1); (j)--)
      if (x[j + 1] - x[j] <= V[i])
        R[j][i] = R[j + 1][i];
      else
        R[j][i] = j;
    L[0][i] = 1;
    L[1][i] = 1;
    for (int(j) = (2); (j) <= (n); (j)++)
      if (x[j] - x[j - 1] <= V[i])
        L[j][i] = L[j - 1][i];
      else
        L[j][i] = j;
  }
  for (int(i) = (0); (i) < (1 << m); (i)++) S2[i] = n + 1, S1[i] = 0;
  for (int(i) = (1); (i) < (1 << m); (i)++) {
    for (int(j) = (0); (j) < (m); (j)++)
      if (i >> j & 1) {
        int last = S1[i ^ (1 << j)];
        S1[i] = max(S1[i], R[last + 1][j]);
      }
    for (int(j) = (0); (j) < (m); (j)++)
      if (i >> j & 1) {
        int last = S2[i ^ (1 << j)];
        S2[i] = min(S2[i], L[last - 1][j]);
      }
  }
  for (int(i) = (0); (i) <= (n); (i)++) minL[i] = n + 2;
  for (int(i) = (0); (i) < (1 << m); (i)++) {
    if (i >> 0 & 1) continue;
    int R = S1[i], L = S2[((1 << m) - 1) ^ i ^ (1 << 0)];
    minL[R] = min(minL[R], L);
  }
  for (int(i) = (n - 1); (i) >= (0); (i)--) minL[i] = min(minL[i], minL[i + 1]);
  for (int(i) = (1); (i) <= (n); (i)++) {
    int rL = L[i][0], rR = R[i][0];
    if (minL[rL - 1] <= rR + 1)
      puts("Possible");
    else
      puts("Impossible");
  }
  return 0;
}
