#include <bits/stdc++.h>
using namespace std;
const int N = 200010;
int n, m, a[N];
int lb[20][N], rb[20][N], cnt;
int fl[1058576], fr[1058576], mx, s[N];
void init() {
  lb[cnt][1] = 1;
  for (int i = 2; i <= n; i++)
    lb[cnt][i] = (a[i] - a[i - 1] > m) ? i : lb[cnt][i - 1];
  rb[cnt][n] = n;
  for (int i = n - 1; i; i--)
    rb[cnt][i] = (a[i + 1] - a[i] > m) ? i : rb[cnt][i + 1];
  lb[cnt][0] = 1, rb[cnt][n + 1] = n;
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  for (; m; m /= 2) init(), ++cnt;
  init();
  fr[0] = n + 1, mx = (1 << cnt) - 1;
  for (int i = 1; i <= mx; i++) {
    fr[i] = n;
    for (int j = 0; j < cnt; j++)
      if (i & (1 << j)) {
        fl[i] = max(fl[i], rb[j + 1][fl[i ^ (1 << j)] + 1]);
        fr[i] = min(fr[i], lb[j + 1][fr[i ^ (1 << j)] - 1]);
      }
  }
  for (int i = 0; i <= mx; i++)
    ++s[lb[0][fr[mx ^ i] - 1]], --s[rb[0][fl[i] + 1] + 1];
  for (int i = 1; i <= n; i++)
    s[i] += s[i - 1], puts(s[i] ? "Possible" : "Impossible");
  return 0;
}
