#include <bits/stdc++.h>
#pragma GCC optimize(3)
using namespace std;
int b[20][200005];
int n;
int a[200005];
int v, vt[20], len[20];
vector<int> child[20][200005];
pair<int, int> bj[20][200005];
map<vector<int>, bool> m[20];
vector<int> tv;
int p;
string ans[200005];
vector<int> cl(vector<int> state, int bh, int cs) {
  vector<int> re;
  re.clear();
  re.push_back(0);
  for (int i = 1; i < state.size(); i++) {
    if (i != bh) {
      for (int j = 0; j < child[cs][state[i]].size(); j++) {
        re.push_back(child[cs][state[i]][j]);
      }
    }
  }
  return re;
}
bool dfs(int e, vector<int> state) {
  if (state.size() == 1) return 1;
  if (state.size() > p - e + 2) return 0;
  if (e == p) return 1;
  if (m[e].count(state)) return m[e][state];
  for (int i = 1; i < state.size(); i++) {
    if (e == 0) {
      if (dfs(e + 1, cl(state, i, e))) {
        ans[i] = "Possible";
      } else
        ans[i] = "Impossible";
    } else {
      if (dfs(e + 1, cl(state, i, e))) {
        return m[e][state] = 1;
      }
    }
  }
  return m[e][state] = 0;
}
int main() {
  scanf("%d%d", &n, &v);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  vt[0] = v;
  tv.push_back(0);
  for (int i = 1; vt[i - 1] != 0; i++) {
    vt[i] = (vt[i - 1] >> 1);
    p = i;
  }
  for (int i = 0; i <= p; i++) {
    b[i][1] = 1;
    bj[i][1].first = 1;
    for (int j = 2; j <= n; j++) {
      if (a[j] - a[j - 1] > vt[i]) {
        b[i][j] = b[i][j - 1] + 1;
        bj[i][b[i][j - 1]].second = j - 1;
        bj[i][b[i][j]].first = j;
      } else
        b[i][j] = b[i][j - 1];
    }
    len[i] = b[i][n];
    bj[i][len[i]].second = n;
  }
  for (int i = 0; i < p; i++) {
    int qd = 1;
    for (int j = 1; j <= len[i]; j++) {
      while (qd <= len[i + 1] && bj[i][j].first <= bj[i + 1][qd].first &&
             bj[i][j].second >= bj[i + 1][qd].second) {
        child[i][j].push_back(qd);
        qd++;
      }
    }
  }
  for (int i = 1; i <= len[0]; i++) tv.push_back(i);
  dfs(0, tv);
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j < ans[b[0][i]].size(); j++) putchar(ans[b[0][i]][j]);
    putchar('\n');
  }
  return 0;
}
