package main
import (
"bufio"
"fmt"
"os"
)
func solveP(n int) ([]int, bool) {
if n%2 == 1 {
return nil, false
}
p := make([]int, n+1)
cur := n
for cur > 0 {
b := 1
for b<<1 <= cur {
b <<= 1
}
m := 2*b - 1
for x := b; x <= cur; x++ {
y := m - x
p[x] = y
p[y] = x
}
cur = m - cur - 1
}
return p, true
}
func solveQ(n int) ([]int, bool) {
if n < 6 || (n&(n-1)) == 0 {
return nil, false
}
q := make([]int, n+1)
if n == 6 {
base := []int{0, 5, 3, 2, 6, 1, 4}
copy(q, base)
return q, true
}
base := []int{0, 5, 3, 2, 6, 7, 4, 1}
copy(q, base)
for l := 8; l <= n; l <<= 1 {
r := 2*l - 1
if r > n {
r = n
}
for i := l; i < r; i++ {
q[i] = i + 1
}
q[r] = l
}
return q, true
}
func printAnswer(out *bufio.Writer, ok bool, a []int, n int) {
if !ok {
fmt.Fprintln(out, "NO")
return
}
fmt.Fprintln(out, "YES")
for i := 1; i <= n; i++ {
if i > 1 {
fmt.Fprint(out, " ")
}
fmt.Fprint(out, a[i])
}
fmt.Fprintln(out)
}
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var n int
fmt.Fscan(in, &n)
p, ok1 := solveP(n)
printAnswer(out, ok1, p, n)
q, ok2 := solveQ(n)
printAnswer(out, ok2, q, n)
}