# 何故か2問だけWAになる
from itertools import combinations


N, K = map(int, input().split())

# 最短距離が2であるような頂点のペアの数の最大値は (N-1)(N-2)/2 で、これはスター型のトポロジをつくった時
# 最小値は 0 で、これは完全グラフを構築した時
max_pairs = int((N - 1) * (N - 2) / 2)
if K > max_pairs:
    print(-1)
    exit(0)

# スター型のトポロジを作ると辺の数は N - 1 本
# 周辺の頂点に1ペアを作るごとに辺を1本足す必要がある
M = N - 1 + max_pairs - K
print(M)

# スターの中心には頂点Nを配置することにする
for i in range(1, N):
    print(i, N)
if K == max_pairs:
    exit(0)

# Kペアになるまで周辺の頂点をつないでいく
pairs = max_pairs
for a, b in combinations(range(1, N), 2):
    print(a, b)
    pairs -= 1
    if pairs == K:
        exit(0) from itertools import combinations N, K = map(int, input().split()) N map(int, input().split()) map int input().split() ().split () input split K max_pairs = int((N - 1) * (N - 2) / 2) max_pairs int((N - 1) * (N - 2) / 2) int (N - 1) * (N - 2) / 2 (N - 1) * (N - 2) N - 1 N 1 N - 2 N 2 2 if K > max_pairs:
    print(-1)
    exit(0)

# スター型のトポロジを作ると辺の数は N - 1 本
# 周辺の頂点に1ペアを作るごとに辺を1本足す必要がある K > max_pairs K max_pairs print(-1) print -1 exit(0) exit 0 M = N - 1 + max_pairs - K M N - 1 + max_pairs - K N - 1 + max_pairs N - 1 N 1 max_pairs K print(M) print M for i in range(1, N):
    print(i, N) i range(1, N) range 1 N print(i, N) print i N if K == max_pairs:
    exit(0)

# Kペアになるまで周辺の頂点をつないでいく K == max_pairs K max_pairs exit(0) exit 0 pairs = max_pairs pairs max_pairs for a, b in combinations(range(1, N), 2):
    print(a, b)
    pairs -= 1
    if pairs == K:
        exit(0) a b combinations(range(1, N), 2) combinations range(1, N) range 1 N 2 print(a, b) print a b pairs -= 1 pairs 1 if pairs == K:
        exit(0) pairs == K pairs K exit(0) exit 0 pairs -= 1 1 pairs N, K = map(int, input().split()) map(int, input().split()) N M = N - 1 + max_pairs - K N - 1 + max_pairs - K M K = map(int, input().split()) map(int, input().split()) K max_pairs = int((N - 1) * (N - 2) / 2) int((N - 1) * (N - 2) / 2) max_pairs pairs = max_pairs max_pairs pairs
# 何故か2問だけWAになる
from itertools import combinations


N, K = map(int, input().split())

# 最短距離が2であるような頂点のペアの数の最大値は (N-1)(N-2)/2 で、これはスター型のトポロジをつくった時
# 最小値は 0 で、これは完全グラフを構築した時
max_pairs = int((N - 1) * (N - 2) / 2)
if K > max_pairs:
    print(-1)
    exit(0)

# スター型のトポロジを作ると辺の数は N - 1 本
# 周辺の頂点に1ペアを作るごとに辺を1本足す必要がある
M = N - 1 + max_pairs - K
print(M)

# スターの中心には頂点Nを配置することにする
for i in range(1, N):
    print(i, N)
if K == max_pairs:
    exit(0)

# Kペアになるまで周辺の頂点をつないでいく
pairs = max_pairs
for a, b in combinations(range(1, N), 2):
    print(a, b)
    pairs -= 1
    if pairs == K:
        exit(0)
