#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007;
const long long inf = mod * mod;
const long long d2 = 500000004;
int p[210000];
int q[210000];
int c[210000];
int L[1 << 18];
int R[1 << 18];
vector<int> en[18];
vector<int> ee;
long long sum[210000];
int main() {
  int a, b;
  scanf("%d%d", &a, &b);
  for (int i = 0; i < a; i++) {
    scanf("%d", p + i);
    if (i) q[i] = p[i] - p[i - 1];
  }
  int tt = b;
  for (int i = 0; i < a; i++) {
    if (tt < q[i]) ee.push_back(i);
  }
  int BI = 0;
  ee.push_back(a);
  for (int i = 0; i < 18; i++) {
    if (tt == 0) break;
    BI++;
    tt /= 2;
    c[i] = tt;
    for (int j = 0; j < a; j++) {
      if (c[i] < q[j]) en[i].push_back(j);
    }
    en[i].push_back(a);
  }
  for (int i = 0; i < (1 << BI); i++) {
    int at = L[i];
    int tmp = b;
    for (int j = 0; j < BI; j++) {
      if (i & (1 << j)) continue;
      if (at == a) {
        L[i + (1 << j)] = a;
        continue;
      }
      int to = upper_bound(en[j].begin(), en[j].end(), at) - en[j].begin();
      L[i + (1 << j)] = max(L[i + (1 << j)], en[j][to]);
    }
  }
  reverse(p, p + a);
  for (int i = 0; i < a; i++) {
    if (i) q[i] = p[i - 1] - p[i];
  }
  for (int i = 0; i < BI; i++) en[i].clear();
  for (int i = 0; i < BI; i++) {
    if (c[i]) {
      for (int j = 0; j < a; j++) {
        if (c[i] < q[j]) en[i].push_back(j);
      }
      en[i].push_back(a);
    }
  }
  for (int i = 0; i < (1 << BI); i++) {
    int at = R[i];
    int tmp = b;
    for (int j = 0; j < BI; j++) {
      if (i & (1 << j)) continue;
      if (R[i] == a) {
        R[i + (1 << j)] = a;
        continue;
      }
      int to = upper_bound(en[j].begin(), en[j].end(), at) - en[j].begin();
      R[i + (1 << j)] = max(R[i + (1 << j)], en[j][to]);
    }
  }
  for (int i = 0; i < (1 << BI); i++) {
  }
  for (int i = 0; i < (1 << BI); i++) {
    int left = L[i];
    int right = a - R[(1 << BI) - 1 - i];
    left++;
    if (lower_bound(ee.begin(), ee.end(), right) -
            lower_bound(ee.begin(), ee.end(), left) <=
        0) {
      sum[left]++;
      sum[right + 1]--;
    }
  }
  for (int i = 0; i <= a; i++) {
    sum[i + 1] += sum[i];
  }
  for (int i = 0; i <= a; i++) {
    sum[i + 1] += sum[i];
  }
  for (int i = 0; i < a; i++) {
    int left, right;
    int ind = upper_bound(ee.begin(), ee.end(), i) - ee.begin();
    if (ind == 0)
      left = 0;
    else
      left = ee[ind - 1];
    ind = upper_bound(ee.begin(), ee.end(), i) - ee.begin();
    right = ee[ind];
    if (sum[left] == sum[right])
      printf("Impossible\n");
    else
      printf("Possible\n");
  }
}
