#arc152d. [arc152_d]Halftree

[arc152_d]Halftree

Problem Statement

We have an undirected graph with NN vertices numbered 00 through N1N-1 and no edges at first. You may add edges to this graph as you like. When you are done with adding edges, the following operation will be performed once using a given integer KK.

  • For each edge you have added, let uu and vv be its endpoints, and an edge will be added between two vertices (u+K)(u+K) mathrmmod\\mathrm{mod} NN and (v+K)(v+K) mathrmmod\\mathrm{mod} NN. This edge will be added even if there is already an edge between these vertices, resulting in multi-edges.

For the given NN and KK, find a set of edges that you should add so that the graph will be a tree after the operation. If there is no such set of edges, indicate that fact.

Constraints

  • 2leqNleq2times1052\\leq N\\leq 2\\times 10^5
  • 1leqKleqN11\\leq K\\leq N-1
  • All values in the input are integers.

Input

The input is given from Standard Input in the following format:

NN KK

Output

If there is a set of edges that satisfies the requirement, let MM be the number of edges, and aia_i and bib_i be the two vertices connected by the ii-th edge, and print a solution in the following format. Here, 0leqMleqN0\\leq M\\leq N must hold, and all values must be integers. The edges may be printed in any order, as well as the endpoints of an edge.

MM a1a_1 b1b_1 a2a_2 b2b_2 vdots\\vdots aMa_M bMb_M

If multiple solutions exist, any of them will be accepted.

If no set of edges satisfies the requirement, print -1.


Sample Input 1

5 2

Sample Output 1

2
2 3
2 4

The operation will add the edges 44-00 and 44-11. Then, the graph will be a tree, so this is a legitimate output.


Sample Input 2

2 1

Sample Output 2

-1

There is no way to have a tree after the operation.


Sample Input 3

7 1

Sample Output 3

3
0 1
2 3
4 5