#include <bits/stdc++.h>
using namespace std;
const int N = 200005;
inline void gi(int &x) {
  int f = 1;
  x = 0;
  char c = getchar();
  while (c < '0' || c > '9') {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') {
    x = x * 10 + c - '0';
    c = getchar();
  }
  x *= f;
}
int n, v, a[N], vis[N], ans[N];
int walk(int st, int vv) {
  int i, j;
  vis[st] = j = 1;
  for (i = st; i > 1 && !vis[i - 1] && a[i] - a[i - 1] <= vv; vis[--i] = 1, j++)
    ;
  for (i = st; i < n && !vis[i + 1] && a[i + 1] - a[i] <= vv; vis[++i] = 1, j++)
    ;
  return j;
}
bool check(int st) {
  int i, j, k, tv = v, id, las;
  for (i = 1; i <= n; i++) vis[i] = 0;
  k = walk(st, v), las = v, tv >>= 1;
  while (1) {
    for (i = 1, j = 0; i < n; i++)
      if (!vis[i] && !vis[i + 1] && a[i + 1] - a[i] <= tv)
        if (a[i + 1] - a[i] > j) id = i, j = a[i + 1] - a[i];
    if (j == 0) {
      tv = las;
      break;
    }
    las = tv, tv >>= 1, k += walk(id, las);
  }
  if (k == n || (1 << n - k - 1) <= las) return 1;
  return 0;
}
int main() {
  int i, j, k = 0;
  gi(n), gi(v);
  for (i = 1; i <= n; i++) gi(a[i]);
  for (i = 1; i <= n; i = j + 1) {
    k++;
    for (j = i; j < n && a[j + 1] - a[j] <= v; j++)
      ;
  }
  if ((1 << k - 2) <= v) {
    for (i = 1; i <= n; i = j + 1) {
      int flag = ans[i] = check(i);
      for (j = i; j < n && a[j + 1] - a[j] <= v;) ans[++j] = flag;
    }
  }
  for (i = 1; i <= n; i++) puts(ans[i] ? "Possible" : "Impossible");
  return 0;
}
