#!/usr/bin/python3 # vstup: # # # pole (0, 0) je vlevo dole # pozice diry je relativni vzhledem k vychozimu bodu def projdi(n, vychozi_x, vychozi_y, dira_x, dira_y): if n <= 1: return # pozice diry if dira_x < n//2: if dira_y < n//2: pozice = "vlevo_dole" else: pozice = "vlevo_nahore" else: if dira_y < n//2: pozice = "vpravo_dole" else: pozice = "vpravo_nahore" dilky = [] if pozice != "vlevo_dole": projdi(n//2, vychozi_x, vychozi_y, n//2 - 1, n//2 - 1) dilky.append( (n//2 - 1, n//2 - 1) ) if pozice != "vlevo_nahore": projdi(n//2, vychozi_x, vychozi_y + n//2, n//2 - 1, 0) dilky.append( (n//2 - 1, n//2) ) if pozice != "vpravo_dole": projdi(n//2, vychozi_x + n//2, vychozi_y, 0, n//2 - 1) dilky.append( (n//2, n//2 - 1) ) if pozice != "vpravo_nahore": projdi(n//2, vychozi_x + n//2, vychozi_y + n//2, 0, 0) dilky.append( (n//2, n//2) ) for (dilek_x, dilek_y) in dilky: print("[%d, %d] " % (dilek_x+vychozi_x, dilek_y+vychozi_y), end="") print() if pozice == "vlevo_dole": projdi(n//2, vychozi_x, vychozi_y, dira_x, dira_y) if pozice == "vlevo_nahore": projdi(n//2, vychozi_x, vychozi_y + n//2, dira_x, dira_y - n//2) if pozice == "vpravo_dole": projdi(n//2, vychozi_x + n//2, vychozi_y, dira_x - n//2, dira_y) if pozice == "vpravo_nahore": projdi(n//2, vychozi_x + n//2, vychozi_y + n//2, dira_x - n//2, dira_y - n//2) if __name__ == "__main__": n = int(input()) dira_str = input().split(" ") (dira_x, dira_y) = ( int(dira_str[0]), int(dira_str[1]) ) kontrola = 1 while kontrola < n: kontrola *= 2 if (n == kontrola) and (0 <= dira_x < n) and (0 <= dira_y < n): projdi(n, 0, 0, dira_x, dira_y) else: print("nespravne parametry")