package main import ( "fmt" ) func main() { var N int fmt.Scan(&N) z := make([][]int, N) for i := 0; i < N; i++ { z[i] = make([]int, N) } if N%2 == 1 { row := 0 col := N / 2 for i := 0; i < N*N; i++ { z[row][col] = i + 1 nrow := (row + N - 1) % N ncol := (col + 1) % N if z[nrow][ncol] != 0 { nrow = (row + 1) % N ncol = col } row = nrow col = ncol } } else { var row, col int row = N - 1 col = N / 2 z[row][col] = 1 for i := 2; i <= N*N; i++ { if z[(row+1)%N][(col+1)%N] == 0 { row = (row + 1) % N col = (col + 1) % N } else { row = (row - 1 + N) % N } z[row][col] = i } } for i := 0; i < N; i++ { for j := 0; j < N; j++ { fmt.Print(z[i][j], " ") } fmt.Println("") } }