def show(matrix, height, width): for row in range(height): for col in range(width): print str(matrix[row, col]).rjust(3), print print "-----------" import random size = int(raw_input("Size: ")) m = {} for row in range(size): for col in range(size): m[row, col] = 0 show(m, size, size) k = 1 row = size - 1 col = size/2 m[row, col] = k k = k + 1 while k <= size * size: i = (row + 1) % size j = (col + 1) % size if m[i, j] == 0: row = i col = j else: row = row - 1 col = col m[row, col] = k k = k + 1 show(m, size, size)