# 中心に1をおき、(1,2),(1,3),(1,4)...を結んだグラフを作ると
# ペアの数は(N-1)C2できてこれが最大（これを超えるKの場合-1）
# ここから条件に合わせるためには、1を含まない要素のペアを直接結んでいけばよい。
# 全部結んだ場合でNC2になり、O(N^2)で10000 (実際5000弱)

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

maxval = ((N-1)*(N-2)) // 2
if maxval < K:
  print(-1)
  exit(0)
  
ans = []

# まず1と各頂点を結んだグラフを構成する
for i in range(2,N+1):
  ans.append((1,i))
  
# そこから減らすべき頂点数
goal = maxval - K
i = 2
j = 3
while goal > 0:
  ans.append((i,j))
  if j + 1 > N:
    i += 1
    j = i + 1
  else:
    j += 1
  goal -= 1
  
print(len(ans))
for a in ans:
  print(*a) N,K = map(int,input().split()) N map(int,input().split()) map int input().split() ().split () input split K maxval = ((N-1)*(N-2)) // 2 maxval ((N-1)*(N-2)) // 2 (N-1)*(N-2) N-1 N 1 N-2 N 2 2 if maxval < K:
  print(-1)
  exit(0)
   maxval < K maxval K print(-1) print -1 exit(0) exit 0 ans = [] ans [] for i in range(2,N+1):
  ans.append((1,i))
  
# そこから減らすべき頂点数 i range(2,N+1) range 2 N+1 N 1 ans.append((1,i)) ans.append ans append (1,i) 1 i goal = maxval - K goal maxval - K maxval K i = 2 i 2 j = 3 j 3 while goal > 0:
  ans.append((i,j))
  if j + 1 > N:
    i += 1
    j = i + 1
  else:
    j += 1
  goal -= 1
   goal > 0 goal 0 ans.append((i,j)) ans.append ans append (i,j) i j if j + 1 > N:
    i += 1
    j = i + 1
  else:
    j += 1
   j + 1 > N j + 1 j 1 N i += 1 i 1 j = i + 1 j i + 1 i 1 j += 1 j 1 goal -= 1 goal 1 print(len(ans)) print len(ans) len ans for a in ans:
  print(*a) a ans print(*a) print *a a j = 3 3 j j += 1 1 j maxval = ((N-1)*(N-2)) // 2 ((N-1)*(N-2)) // 2 maxval goal = maxval - K maxval - K goal goal -= 1 1 goal N,K = map(int,input().split()) map(int,input().split()) N ans = [] [] ans K = map(int,input().split()) map(int,input().split()) K j = i + 1 i + 1 j i += 1 1 i i = 2 2 i
# 中心に1をおき、(1,2),(1,3),(1,4)...を結んだグラフを作ると
# ペアの数は(N-1)C2できてこれが最大（これを超えるKの場合-1）
# ここから条件に合わせるためには、1を含まない要素のペアを直接結んでいけばよい。
# 全部結んだ場合でNC2になり、O(N^2)で10000 (実際5000弱)

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

maxval = ((N-1)*(N-2)) // 2
if maxval < K:
  print(-1)
  exit(0)
  
ans = []

# まず1と各頂点を結んだグラフを構成する
for i in range(2,N+1):
  ans.append((1,i))
  
# そこから減らすべき頂点数
goal = maxval - K
i = 2
j = 3
while goal > 0:
  ans.append((i,j))
  if j + 1 > N:
    i += 1
    j = i + 1
  else:
    j += 1
  goal -= 1
  
print(len(ans))
for a in ans:
  print(*a)