package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
if !scanner.Scan() {
return
}
nStr := scanner.Text()
if !scanner.Scan() {
return
}
kStr := scanner.Text()
n, _ := strconv.Atoi(nStr)
k, _ := strconv.ParseInt(kStr, 10, 64)
S := int64(n) * int64(n+1) / 2
if k < S {
fmt.Println("-1")
return
}
p := make([]int, n)
q := make([]int, n)
for i := 0; i < n; i++ {
p[i] = i + 1
q[i] = i + 1
}
for i := 1; i <= n/2; i++ {
if S == k {
break
}
maxInc := int64(n - 2*i + 1)
if S+maxInc <= k {
q[i-1], q[n-i] = q[n-i], q[i-1]
S += maxInc
} else {
delta := k - S
q[i-1], q[i-1+int(delta)] = q[i-1+int(delta)], q[i-1]
S += delta
break
}
}
out := bufio.NewWriter(os.Stdout)
fmt.Fprintln(out, S)
for i := 0; i < n; i++ {
if i > 0 {
out.WriteByte(' ')
}
out.WriteString(strconv.Itoa(p[i]))
}
out.WriteByte('\n')
for i := 0; i < n; i++ {
if i > 0 {
out.WriteByte(' ')
}
out.WriteString(strconv.Itoa(q[i]))
}
out.WriteByte('\n')
out.Flush()
}