#include <bits/stdc++.h>
inline void swap(int &a, int &b) { return (void)(a ^= b ^= a ^= b); }
const int MaN = 200005, MaP = 20 * 200000 + 5;
struct edge {
  int to, ne;
} e[MaP];
int h[MaP], cnt;
void add(int a, int b) {
  e[++cnt] = (edge){b, h[a]};
  h[a] = cnt;
  return;
}
int ncnt, fcnt, sz[MaP], chu[MaP];
int num[20];
int n, v, loc[MaN];
std::map<int, int> locs;
int ls[20], lscon;
bool work(int step, int bn) {
  if (lscon < 2) return true;
  if (step == fcnt + 1) return true;
  int lsn[20], lsncon = 0;
  for (int u = 0; u < lscon; u++) {
    if (ls[u] == bn) continue;
    int x = ls[u];
    for (int i = h[x]; i; i = e[i].ne) {
      if (lsncon > fcnt - step) return false;
      lsn[lsncon++] = e[i].to;
    }
  }
  swap(lscon, lsncon);
  for (int i = 0; i < 20; i++) swap(lsn[i], ls[i]);
  for (int i = 0; i < lscon; i++)
    if (work(step + 1, ls[i])) return true;
  swap(lscon, lsncon);
  for (int i = 0; i < 20; i++) swap(lsn[i], ls[i]);
  return false;
}
int main() {
  scanf("%d%d", &n, &v);
  for (int i = 1; i <= n; i++) scanf("%d", &loc[i]);
  loc[n + 1] = 0x3f3f3f3f;
  locs[n] = 0;
  while (true) {
    ++fcnt;
    int last = 1;
    int begin = ++ncnt;
    for (int i = 2; i <= n + 1; i++) {
      if (loc[i] - loc[i - 1] > v) {
        sz[ncnt] = i - last;
        last = i;
        std::map<int, int>::iterator it = locs.lower_bound(i - 1);
        add(it->second, ncnt);
        chu[it->second]++;
        if (i != n + 1) ncnt++;
      }
    }
    int sum = 0;
    for (int i = begin; i <= ncnt; i++) {
      sum += sz[i];
      locs[sum] = i;
    }
    num[fcnt] = ncnt - begin + 1;
    if (!v) break;
    v >>= 1;
  }
  if (num[1] > fcnt) {
    for (int i = 1; i <= n; i++) printf("Impossible\n");
    return 0;
  }
  int sum = 0, last;
  for (int i = 1; i <= num[1]; i++) {
    last = sum;
    sum += sz[i];
    lscon = num[1];
    for (int j = 0; j < num[1]; j++) ls[j] = j + 1;
    if (work(2, i))
      for (int i = last + 1; i <= sum; i++) printf("Possible\n");
    else
      for (int i = last + 1; i <= sum; i++) printf("Impossible\n");
  }
  return 0;
}
