package main import ( "fmt" ) func odd(N int, z [][]int) [][]int{ 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 } return z } func print(z [][]int){ for i := range z { for j:= range z[i] { fmt.Print(z[i][j], " ") } fmt.Println("") } } 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 { z = odd(N, z) } else if N%4 == 0 { for y := 0; y < N; y++ { for x := 0; x < N; x++ { ty := y % 4 tx := x % 4 if (tx%3 == 0 || ty%3 == 0) && (tx%3 == 0 && ty%3 == 0) { z[y][x] = N*N + 1-(y*N+x+1) } else { z[y][x] = y*N + x + 1 } } } } else{ seed := make([][]int, N/2+1) for i:= range seed{ seed[i] = make([]int, N/2) } seed = odd(N/2, seed) LUX := make([][]int, N/2+1) for i:= range LUX{ LUX[i] = make([]int, N/2) } for i:=0; i