#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
int n, m, a[N], l[N][25], r[N][25], v[25], cnt = 0, L[1 << 25], R[1 << 25],
                                           ans[N];
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  int V = m;
  while (V) {
    V >>= 1;
    v[cnt++] = V;
  }
  v[cnt] = m;
  for (int i = 0; i <= cnt; i++) {
    l[i][1] = 1;
    r[i][n] = n;
    for (int j = 2; j <= n; j++)
      l[i][j] = (a[j] - a[j - 1] <= v[i]) ? l[i][j - 1] : j;
    for (int j = n - 1; j >= 1; j--)
      r[i][j] = (a[j + 1] - a[j] <= v[i]) ? r[i][j + 1] : j;
  }
  for (int i = 0; i < (1 << cnt); i++) R[i] = n + 1;
  for (int i = 0; i < (1 << cnt); i++)
    for (int j = 0; j <= cnt; j++)
      if (((1 << j) & i) == 0)
        L[(1 << j) | i] = max(L[(1 << j) | i], r[j][L[i] + 1]),
                     R[(1 << j) | i] = min(R[(1 << j) | i], l[j][R[i] - 1]);
  for (int i = 1; i <= n; i++) {
    bool flag = 0;
    for (int j = 0; j < (1 << cnt); j++) {
      int ss = ((1 << cnt) - 1) ^ j;
      if (L[j] >= i - 1 && R[ss] <= r[cnt][i] + 1) {
        flag = 1;
        break;
      }
    }
    for (int j = i; j <= r[cnt][i]; j++) {
      if (flag)
        ans[j] = 1;
      else
        ans[j] = 0;
    }
    i = r[cnt][i];
  }
  for (int i = 1; i <= n; i++) puts(ans[i] == 0 ? "Impossible" : "Possible");
  return 0;
}
