#include<bits/stdc++.h>
using namespace std;
using Int = long long;
 
template<typename T1,typename T2> inline void chmin(T1 &a,T2 b){if(a>b) a=b;}
template<typename T1,typename T2> inline void chmax(T1 &a,T2 b){if(a<b) a=b;}
 
//INSERT ABOVE HERE
signed main(){
  Int n,v;
  cin>>n>>v;
  vector<Int> x(n);
  for(Int i=0;i<n;i++) cin>>x[i];
 
  vector<vector<Int> > dpl,dpr;
  while(1){
    {
      vector<Int> dp(n);
      dp.back()=n;
      for(Int i=n-2;i>=0;i--){
	if(x[i+1]-x[i]<=v) dp[i]=dp[i+1];
	else dp[i]=i+1;
      }
      dpl.emplace_back(dp);
    }
    {
      vector<Int> dp(n);
      dp.front()=-1;
      for(Int i=1;i<n;i++){
	if(x[i]-x[i-1]<=v) dp[i]=dp[i-1];
	else dp[i]=i-1;
      }
      dpr.emplace_back(dp);
    }
    if(!v) break;
    v>>=1;
  }
 
  Int k=dpl.size();
  vector<Int> dp(1<<k,0);
  vector<Int> pd(1<<k,n-1);
  
  for(Int b=0;b<(1<<k);b++){
    for(Int i=0;i<k;i++){
      if((b>>i)&1) continue;
      chmax(dp[b|(1<<i)],(dp[b]<n?dpl[i][dp[b]]:n));
      chmin(pd[b|(1<<i)],(~pd[b]?dpr[i][pd[b]]:-1));
    }
  }
 
  vector<Int> ans(n+1);
  
  
  for(Int b=0;b<(1<<k);b+=2){
    Int a=((1<<k)-2)^b;
    Int c=dp[a]<n?dpl[0][dp[a]]:n;
    if(pd[b]>=c) continue;
    ans[dp[a]]++;
    ans[c]--;
    continue;
    cout<<a<<" "<<b<<endl;
    cout<<dp[a]<<" "<<pd[b]<<" "<<c<<endl;
    cout<<endl;
  }
  
  
  for(Int i=0;i<n;i++){
    cout<<(ans[i]?"Possible":"Impossible")<<endl;
    ans[i+1]+=ans[i];
  }
  return 0;
}