#ARC152D. 半棵树

半棵树

半棵树

时间限制:2s
空间限制:512MB

题目描述

有一个包含 NN 个顶点的无向图,顶点编号为 00 到 N−1N-1,初始没有边。你可以先向图中加入若干条边。加入完毕后,对你加入的每一条边 (u,v)(u,v),系统还会加入一条连接 (u+K) mod N(u+K)\bmod N 与 (v+K) mod N(v+K)\bmod N 的边;即使该边已经存在,也仍会加入,从而形成重边。

请构造一组最初加入的边,使上述操作完成后的图是一棵树;若不存在这样的边集,则报告无解。

输入格式

输入一行,包含两个整数 N,KN,K。

输出格式

若无解,输出一行 -1。

否则,第一行输出最初加入的边数 MM,满足 0≤M≤N0\le M\le N。接下来 MM 行,第 ii 行输出两个整数 ai,bia_i,b_i,表示加入一条连接这两个顶点的无向边。边的顺序以及一条边两个端点的顺序均可任意。

如果存在多种合法方案,输出任意一种即可。

样例输入 1

5 2

样例输出 1

2
2 3
2 4

样例输入 2

2 1

样例输出 2

-1

样例输入 3

7 1

样例输出 3

3
0 1
2 3
4 5

数据范围

  • 2≤N≤2×1052\le N\le 2\times 10^5;
  • 1≤K≤N−11\le K\le N-1。
子任务编号 分值 特殊限制
1 20 N≤9N\le 9
2 40 gcd⁡(N,K)=1\gcd(N,K)=1
3 无特殊限制