#include <bits/stdc++.h>
using namespace ::std;
const long long maxn = 4e5 + 100;
const long long mod = 1e9 + 7;
const long long logg = 20;
vector<long long> E;
char logG(long long v, long long ww) {
  if (E.empty()) {
    while (v) {
      E.push_back(v);
      v /= 2;
    }
    E.push_back(0);
    reverse(E.begin(), E.end());
  }
  return lower_bound(E.begin(), E.end(), ww) - E.begin();
}
long long ta_koj_jelo[maxn][logg];
long long ta_koj_agha[maxn][logg];
long long x[maxn];
char fas[maxn];
long long pri[maxn];
long long saf[maxn];
long long cnt[maxn];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long n, v;
  cin >> n >> v;
  for (long long i = 1; i <= n; i++) {
    cin >> x[i];
  }
  for (long long i = 1; i + 1 <= n; i++) {
    fas[i] = logG(v, x[i + 1] - x[i]);
  }
  for (long long i = 0; i < logg; i++) {
    ta_koj_jelo[n][i] = n;
    ta_koj_jelo[n + 1][i] = n;
    ta_koj_agha[1][i] = 1;
    ta_koj_agha[0][i] = 1;
  }
  for (long long i = n - 1; i >= 0; i--) {
    for (long long j = 0; j < logg; j++) {
      if (fas[i] <= j) {
        ta_koj_jelo[i][j] = ta_koj_jelo[i + 1][j];
      } else {
        ta_koj_jelo[i][j] = i;
      }
    }
  }
  for (long long i = 2; i <= n; i++) {
    for (long long j = 0; j < logg; j++) {
      if (fas[i - 1] <= j) {
        ta_koj_agha[i][j] = ta_koj_agha[i - 1][j];
      } else {
        ta_koj_agha[i][j] = i;
      }
    }
  }
  long long M = (long long)(E.size());
  pri[0] = 0;
  for (long long i = 1; i < (1 << M); i++) {
    pri[i] = 0;
    for (long long j = 0; j < M; j++) {
      if ((i >> j) & 1) {
        pri[i] = max(pri[i], ta_koj_jelo[pri[i ^ (1 << j)] + 1][j]);
      }
    }
    pri[i] = min(pri[i], n);
  }
  saf[0] = n + 1;
  for (long long i = 1; i < (1 << M); i++) {
    saf[i] = n + 1;
    for (long long j = 0; j < M; j++) {
      if ((i >> j) & 1) {
        saf[i] = min(saf[i], ta_koj_agha[saf[i ^ (1 << j)] - 1][j]);
      }
    }
    saf[i] = max(saf[i], (long long)1);
  }
  for (long long i = 0; i < (1 << M); i++) {
  }
  long long H = ((1 << M) / 2) - 1;
  if (saf[H] == 1) {
    cnt[0] = 1;
  } else {
    for (long long i = 0; i <= H; i++) {
      long long ras = saf[i];
      long long chap = pri[H ^ i];
      long long R = ta_koj_jelo[chap + 1][M - 1];
      long long L = ta_koj_agha[ras - 1][M - 1];
      if (ras - 1 <= R) {
        cnt[L]++;
        cnt[R + 1]--;
      }
    }
  }
  for (long long i = 1; i <= n; i++) {
    cnt[i] += cnt[i - 1];
    if (cnt[i]) {
      cout << "Possible\n";
    } else {
      cout << "Impossible\n";
    }
  }
}
