#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:102400000,102400000")
using namespace std;
template <class T, class U>
inline void Max(T &a, U b) {
  if (a < b) a = b;
}
template <class T, class U>
inline void Min(T &a, U b) {
  if (a > b) a = b;
}
inline void add(int &a, int b) {
  a += b;
  if (a >= 1000000007) a -= 1000000007;
}
int pow(int a, int b) {
  int ans = 1;
  while (b) {
    if (b & 1) ans = ans * (long long)a % 1000000007;
    a = (long long)a * a % 1000000007;
    b >>= 1;
  }
  return ans;
}
int b[40], sz, a[200010], c[200010];
int dp[1 << 18], f[1 << 18], l[200010][20], r[200010][20];
int main() {
  int T, i, j, k, ca = 0, m, K, n;
  scanf("%d%d", &n, &m);
  K = m;
  sz = 0;
  while (K) b[sz++] = K, K >>= 1;
  b[sz++] = 0;
  swap(b[0], b[sz - 1]);
  for (int i = 0; i < n; i++) scanf("%d", &a[i]);
  for (int k = 0; k < sz; k++) {
    K = b[k];
    l[0][k] = 0;
    for (int i = 1; i < n; i++) {
      if (K >= a[i] - a[i - 1])
        l[i][k] = l[i - 1][k];
      else
        l[i][k] = i;
    }
    r[n - 1][k] = n - 1;
    for (int i = n - 1 - 1; i >= 0; i--) {
      if (K >= a[i + 1] - a[i])
        r[i][k] = r[i + 1][k];
      else
        r[i][k] = i;
    }
  }
  sz--;
  memset(dp, -1, sizeof(dp));
  dp[0] = 0;
  for (int i = 0; i < (1 << sz); i++) {
    int first = dp[i];
    for (int j = 0; j < sz; j++)
      if ((i >> j & 1) == 0) {
        Max(dp[i | 1 << j], first);
        if (first + 1 < n) Max(dp[i | 1 << j], r[first + 1][j]);
      }
  }
  for (int i = (1 << sz) - 1; i >= 0; i--) f[i] = n;
  f[0] = n - 1;
  for (int i = 0; i < (1 << sz); i++) {
    int first = f[i];
    for (int j = 0; j < sz; j++)
      if ((i >> j & 1) == 0) {
        Min(f[i | 1 << j], first);
        if (first) Min(f[i | 1 << j], l[first - 1][j]);
      }
  }
  int mask = (1 << sz) - 1, flag = 0;
  for (int i = 0; i < (1 << sz); i++) {
    int first = dp[i], second = f[mask ^ i];
    if (first < 0 || second >= n) continue;
    k = r[first + 1][sz];
    j = l[second - 1][sz];
    if (j <= first + 1 && k >= second - 1) c[j]++, c[k + 1]--;
  }
  {
    for (int i = 1; i < n; i++) c[i] += c[i - 1];
    for (int i = 0; i < n; i++) {
      if (c[i])
        puts("Possible");
      else
        puts("Impossible");
    }
  }
  return 0;
}
