fun main(args: Array<String>) {
    val inputs = readInputLine().split(" ").map { Integer.parseInt(it) }
    val n = inputs[0]
    val k = inputs[1]
    
    // うにの場合の最大数を超えるKはありえない
    // 最大数は1 to (N-1)までの総和
    if (k > (n - 1) * (n - 2) / 2) {
        println("-1")
        return
    }
    
    // 辺の本数を出す
    println("${n - 1 + (n - 1) * (n - 2) / 2 - k}")
    
    // まずはうにを構成する辺を作る
    for (i in 2..n) {
        println("1 $i")
    }
    
    // 条件を満たす点を減らす辺を生やす
    var s = 2
    var e = 3
    for (i in 1..(n - 1) * (n - 2) / 2 - k) {
        println("$s $e")
        e++
        if (e > n) {
            s++
            e = s + 1
        }
    }
}
 
fun readInputLine(): String {
    return readLine()!!
}
