#CF2045L. 有缺陷的 DFS

有缺陷的 DFS

L. 有缺陷的 DFS
每个测试点时间限制:11
每个测试点内存限制:10241024 兆字节

你正在研究一种称为深度优先搜索(DFS)的图遍历算法。然而,由于一个缺陷,你的算法与标准 DFS 略有不同。以下是你那有缺陷的 DFS(BDFS)的算法,假设图有 NN 个节点(编号从 11NN)。

BDFS():
    let S be an empty stack
    let FLAG be a boolean array of size N which are all false initially
    let counter be an integer initialized with 0

    push 1 to S

    while S is not empty:
      pop the top element of S into u
      FLAG[u] = true

      for each v neighbour of u in ascending order:
        counter = counter + 1
        if FLAG[v] is false:
          push v to S

    return counter

你意识到这个缺陷使得算法比标准 DFS 更慢,这可以通过函数 BDFS() 的返回值来研究。为了研究该算法的行为,你需要通过构造一个无向简单图使得函数 BDFS() 返回 KK 来制造一些测试用例,或者判断是否不可能做到。

输入
一行包含一个整数 KK1K1091 \le K \le 10^9)。

输出
如果不可能构造一个无向简单图使得函数 BDFS() 返回 KK,则在一行中输出 -1 -1
否则,按以下格式输出图:第一行包含两个整数 NNMM,分别表示图中的节点数和无向边数。接下来的 MM 行,每行包含两个整数 uuvv,表示连接节点 uu 和节点 vv 的一条无向边。你可以按任意顺序输出边。该图必须满足以下约束:
1N327681 \le N \le 32768
1M655361 \le M \le 65536
对于所有边,1u,vN1 \le u, v \le N
图是简单图,即没有重边也没有自环。
注意,你不必最小化节点数或边数。可以证明,如果存在一个图使得 BDFS() 的返回值为 KK,那么一定存在一个满足上述所有约束的图。如果有多个解,你可以输出任意一个。

样例

输入

8

输出

3 3
1 2
1 3
2 3

输入

1

输出

-1 -1

输入

23

输出

5 7
4 5
2 3
3 1
2 4
4 3
2 1
1 5

样例解释

对于样例 #1:左边的图描述了该样例的输出。右边的图是另一个有效解。
(图略)

对于样例 #3:下面的图描述了该样例的输出。
(图略)