N = gets.to_i ans = Array.new(N) { Array.new(N) } visited = Array.new(N) { Array.new(N) } DY = [-1, 0, 1, 0] DX = [0, 1, 0, -1] direct = 1 y = 0 x = 0 num = 1 (1..N * N).each do |n| ans[y][x] = "%03d" % n visited[y][x] = true ny = y + DY[direct] nx = x + DX[direct] if ny < 0 || nx < 0 || N <= ny || N <= nx || visited[ny][nx] direct = (direct + 1) % 4 ny = y + DY[direct] nx = x + DX[direct] end y = ny x = nx end puts ans.map { |row| row.join(' ') }