import copy
from functools import reduce

def jumps(vol):
	j = 0
	while vol > 0:
		vol = vol // 2
		j += 1
	return j

def visitable(oases, i, vol):
	return visitable_r(oases, i, vol, [False] * len(oases))

def visitable_r(oases, i, vol, visited):
	# visit all visitable by sliding
	visited[i] = True
	# print("i: ", i, " vol: ", vol)
	# print(visited)
	j = i + 1
	while j < len(oases) and (oases[j] - oases[j-1] <= vol):
		visited[j] = True
		j += 1
	j = i - 1
	while j >= 0 and (oases[j+1] - oases[j] <= vol):
		visited[j] = True
		j -= 1
	# print("spread: ", visited)

	if reduce((lambda x, y: x and y), visited):
		return True

	if not checkMaybeViable(visited, vol):
		return False
	unvisited = 0
	for j in range(len(oases)):
		if not visited[j]:
			unvisited += 1
			if visitable_r(oases, j, vol//2, copy.copy(visited)):
				return True
	return unvisited == 0

def checkMaybeViable(visited, vol):
	jump = jumps(vol)
	isles = 0
	lastNeedToVisit = 0
	for i in range(len(visited)):
		if i == 0 or ((oases[i] - lastNeedToVisit > vol) and (not visited[i])):
			lastNeedToVisit = oases[i]
			isles += 1
			if isles > jump + 1:
				return False
	return True

[n, vol] = list(map(lambda x: int(x), input().split()))
oases = list(map(lambda x: int(x), input().split()))
for i in range(n):
	if visitable(oases, i, vol):
		print("Possible")
	else:
		print("Impossible")