fun main(args: Array<String>) {
    val (M, K) = readLine()!!.split(" ").map(String::toInt)
    var s = 0
    for (i in 0..Math.pow(2.0, M.toDouble()).toInt() - 1) {
        s = s.xor(i)
    }
    if (K == 0) {
        for (i in 1..Math.pow(2.0, M.toDouble()).toInt() - 1) {
            print("$i ")
        }
        print("$K $K ")
        for (i in (1..Math.pow(2.0, M.toDouble()).toInt() - 1).reversed()) {
            print("$i ")
        }
        println()
    } else if (K >= Math.pow(2.0, M.toDouble()) || s.xor(K) != K) {
        println(-1)
    } else {
        print("0 $K 0 ")
        for (i in 1..Math.pow(2.0, M.toDouble()).toInt() - 1) {
            if (i != K) {
                print("$i ")
            }
        }
        print("$K ")
        for (i in (1..Math.pow(2.0, M.toDouble()).toInt() - 1).reversed()) {
            if (i != K) {
                print("$i ")
            }
        }
        println()
    }
}