System.in.readLines().each { input ->
input = input as int
def out = []
def c = -1
def r = 0
def dir = [1,0]
def steps = input
def step = 0
def edge = 0
(1..input*input).each {
if (++step > steps) {
step = 1
dir = edge%2 ? dir.reverse()*.multiply(-1) : dir.reverse()
if (++edge % 2) steps--
}
c += dir[0]
r += dir[1]
if (!out[r]) out[r] = []
out[r][c] = it
}
println out*.collect{"$it".padLeft("${input*input}".length())}*.join(" ").join("\n") + "\n"
}
U3lzdGVtLmluLnJlYWRMaW5lcygpLmVhY2ggeyBpbnB1dCAtPgogICAgaW5wdXQgPSBpbnB1dCBhcyBpbnQKICAgIGRlZiBvdXQgPSBbXQogICAgZGVmIGMgPSAtMQogICAgZGVmIHIgPSAwCiAgICBkZWYgZGlyID0gWzEsMF0KICAgIGRlZiBzdGVwcyA9IGlucHV0CiAgICBkZWYgc3RlcCA9IDAKICAgIGRlZiBlZGdlID0gMAogICAgCiAgICAoMS4uaW5wdXQqaW5wdXQpLmVhY2ggewogICAgICAgIGlmICgrK3N0ZXAgPiBzdGVwcykgewogICAgICAgICAgICBzdGVwID0gMQogICAgICAgICAgICBkaXIgPSBlZGdlJTIgPyBkaXIucmV2ZXJzZSgpKi5tdWx0aXBseSgtMSkgOiBkaXIucmV2ZXJzZSgpCiAgICAgICAgICAgIGlmICgrK2VkZ2UgJSAyKSBzdGVwcy0tCiAgICAgICAgfQogICAgICAgIGMgKz0gZGlyWzBdCiAgICAgICAgciArPSBkaXJbMV0KICAgICAgICBpZiAoIW91dFtyXSkgb3V0W3JdID0gW10KICAgICAgICBvdXRbcl1bY10gPSBpdAogICAgfQogICAgcHJpbnRsbiBvdXQqLmNvbGxlY3R7IiRpdCIucGFkTGVmdCgiJHtpbnB1dCppbnB1dH0iLmxlbmd0aCgpKX0qLmpvaW4oIiAiKS5qb2luKCJcbiIpICsgIlxuIgp9