#include <bits/stdc++.h>
using namespace std;
int a[200005] = {0}, n, m, v, l[20][200005] = {0}, r[20][200005] = {0};
int f[200005] = {0}, g[200005] = {0}, p[200005] = {0};
int main() {
  scanf("%d%d", &n, &v);
  for (int i = 1; i <= n; i++) scanf("%d", a + i);
  sort(a + 1, a + n + 1);
  for (int j = 0, V = v; V; j++, V >>= 1) {
    m = max(m, j);
    for (int i = 1; i <= n; i++) {
      int I = i + 1;
      while (I <= n && a[I] - a[I - 1] <= V) I++;
      I--;
      for (int ii = i; ii <= I; ii++) l[j][ii] = i, r[j][ii] = I;
      i = I;
    }
  }
  m++;
  for (int i = 1; i <= n; i++) l[m][i] = r[m][i] = i;
  for (int i = 0; i < (1 << m); i++) g[i] = n;
  f[0] = 1;
  for (int i = 1; i < (1 << m); i++) {
    int now = 1;
    for (int j = m - 1; ~j; j--)
      if ((1 << j) & i) f[i] = max(f[i], r[j + 1][f[i ^ (1 << j)]] + 1);
    now = n;
    for (int j = m - 1; ~j; j--)
      if ((1 << j) & i) g[i] = min(g[i], l[j + 1][g[i ^ (1 << j)]] - 1);
  }
  for (int i = 0; i < (1 << m); i++) {
    if (r[0][f[i]] + 1 >= l[0][g[(1 << m) - i - 1]])
      p[l[0][g[(1 << m) - i - 1]]]++, p[r[0][f[i]] + 1]--;
  }
  for (int i = 1; i <= n; i++) {
    p[i] += p[i - 1];
    if (p[i])
      printf("Possible\n");
    else
      printf("Impossible\n");
    ;
  }
}
