n = map(int, raw_input().split())
x = map(int, raw_input().split())
#x.sort(reverse = True)
#print x
for i in range(0, n[0]):
    mem = [0]*n[0]
    v = n[1]
    V = n[1]
    mem[i]=1
    go(mem,v,i,V)
    if chk(mem) == 1:
        print Possible
    else:
        print Impossible
        
def go(mem,v,i,V):
    if (i-1)<0:
        if x[i+1]-x[i]<=v and mem[i+1]==0:
            mem[i+1]=1
            go(mem,V,i+1,V)
        elif V>=1:
            for j in range(0,n[0]):
                if mem[j]==0:
                    go(mem,V/2,j,V/2)
        else:
            return 0
    elif (i+1)==n[0]:
        if x[i]-x[i-1]<=v and mem[i-1]==0:
            mem[i-1]=1
            go(mem,v,i-1,V)
        elif V>=1:
            for j in range(0,n[0]):
                if mem[j]==0:
                    go(mem,V/2,j,V/2)
        else:
            return 0
    else:
        if x[i+1]-x[i]<=v and mem[i+1]==0:
            mem[i+1]=1
            go(mem,V,i+1,V)
        elif x[i]-x[i-1]<=v and mem[i-1]==0:
            mem[i-1]=1
            go(mem,v,i-1,V)
        elif V>=1:
            for j in range(0,n[0]):
                if mem[j]==0:
                    go(mem,V/2,j,V/2)
        else:
            return 0
def chk(mem):
    for t in range(0,n[0]):
        if mem[t]!=1:
            return 0
    return 1