int getValue(x, y, width, height) {
int acc = width * height
int outerLayers = [x, y, (width - 1 - x), (height - 1 - y)].min()
width -= 2*outerLayers
height -= 2*outerLayers
x -= outerLayers
y -= outerLayers
for (acc -= width * height; y != 0; acc += height - 1)
(x, y, height, width) = [y, width - 1 - x, width, height]
return acc + x + 1
}
def printArray(width, height) {
height.times { y ->
width.times { x ->
print getValue(x, y, width, height).toString().padLeft(4)
}
println()
}
}
printArray(*System.in.newReader().readLine().split()*.toInteger())
aW50IGdldFZhbHVlKHgsIHksIHdpZHRoLCBoZWlnaHQpIHsKICAgIGludCBhY2MgPSB3aWR0aCAqIGhlaWdodAogICAgaW50IG91dGVyTGF5ZXJzID0gW3gsIHksICh3aWR0aCAtIDEgLSB4KSwgKGhlaWdodCAtIDEgLSB5KV0ubWluKCkKICAgIHdpZHRoIC09IDIqb3V0ZXJMYXllcnMKICAgIGhlaWdodCAtPSAyKm91dGVyTGF5ZXJzCiAgICB4IC09IG91dGVyTGF5ZXJzCiAgICB5IC09IG91dGVyTGF5ZXJzCiAgICBmb3IgKGFjYyAtPSB3aWR0aCAqIGhlaWdodDsgeSAhPSAwOyBhY2MgKz0gaGVpZ2h0IC0gMSkKICAgICAgICAoeCwgeSwgaGVpZ2h0LCB3aWR0aCkgPSBbeSwgd2lkdGggLSAxIC0geCwgd2lkdGgsIGhlaWdodF0KICAgIHJldHVybiBhY2MgKyB4ICsgMQp9CgpkZWYgcHJpbnRBcnJheSh3aWR0aCwgaGVpZ2h0KSB7CiAgICBoZWlnaHQudGltZXMgeyB5IC0+CiAgICAgICAgd2lkdGgudGltZXMgeyB4IC0+CiAgICAgICAgICAgIHByaW50IGdldFZhbHVlKHgsIHksIHdpZHRoLCBoZWlnaHQpLnRvU3RyaW5nKCkucGFkTGVmdCg0KQogICAgICAgIH0KICAgICAgICBwcmludGxuKCkKICAgIH0KfQoKcHJpbnRBcnJheSgqU3lzdGVtLmluLm5ld1JlYWRlcigpLnJlYWRMaW5lKCkuc3BsaXQoKSoudG9JbnRlZ2VyKCkpCgo=