n,v=map(int,raw_input().split())
a=map(int,raw_input().split())
m=0
vv=v
while vv>0:
    vv/=2
    m+=1
m+=1
nxl=[[None]*m for _ in xrange(n)]
nxr=[[None]*m for _ in xrange(n)]
for j in xrange(m):
    nxl[n-1][j]=n-1
    nxr[0][j]=0
for j in xrange(m):
    now=0
    pre=0
    while now<n-1:
        while now<n-1:
            nx=now+1
            if a[nx]-a[now]>v/(2**j):break
            now=nx
        for i in xrange(pre,nx):
            nxl[i][j]=now
        pre=nx
        now=nx
for j in xrange(m):
    now=n-1
    pre=n-1
    while now>0:
        while now>0:
            nx=now-1
            if a[now]-a[nx]>v/(2**j):break
            now=nx
        for i in xrange(pre,nx,-1):
            nxr[i][j]=now
        pre=nx
        now=nx
dpl=[0]*(1<<m)
dpr=[n-1]*(1<<m)
for i in xrange(1<<m):
    for j in xrange(m):
        if not (i>>j&1):
            L=nxl[dpl[i]][j]
            R=nxr[dpr[i]][j]
            if L==n-1:L-=1
            if R==0:R+=1
            dpl[i|(1<<j)]=max(dpl[i|(1<<j)],L+1)
            dpr[i|(1<<j)]=min(dpr[i|(1<<j)],R-1)

for i in xrange(n):
    left=nxr[i][0]
    right=nxl[i][0]
    ok=False
    for j in xrange(1<<m):
        if (j&1):continue
        if dpl[j]>=left:
            nokori=((1<<m)-1)^j
            nokori-=1
            if dpr[nokori]<=right:
                ok=True
                break
    print "Possible" if ok else "Impossible"
