package main import . "fmt" func main() { var n int Scan(&n) if n <= 2 || n == 3 || n == 5 { Println(-1) return } ans := make([]any, (n+1)/2) if n % 2 == 0 { for i := range ans { ans[i] = (i+1)*2 } } else { ans[0] = 3 ans[1] = 6 ans[2] = 2 ans[3] = 4 for i := 4; i < len(ans); i++ { ans[i] = i*2 } } Println(ans...) } /* 考察 偶数を並べればいいってこと? n <= 2 は 3つ目の条件の 1 <= i <= ceil(n/2) - 1 = 0 の部分がおかしくなるので成立しないでいいのかなあ? n = 3 は 長さ 2 の数列だけど、使える値が 1,2,3 だけなので 3つ目の条件満たす組み合わせがない n = 5 は 長さ 3 の数列だけど、使える値が 1,2,3,4,5 で 3つ目の条件を満たす組み合わせがない n = 7 は 長さ 4 の数列で、使える値が 1,2,3,4,5,6,7 で 2,4,6,3 と並べれば成立 nが 7 以上の奇数の場合は 3 を数列の端において続けて 6 を置いてさらに続けて残りすべて偶数を置けば成立? nが 4 以上の偶数の場合は n 以下の偶数列挙すればいいだけ? */