题目背景
搬运自 Code+ #8 决赛。
题目描述
小 I 既喜欢生成树,又喜欢他的幸运数字 k,所以小 I 想造出一个可以有重边自环的有向图,点从 1 到 n 编号,使得以 1 为根的外向生成树数量恰好为 k。但小 I 太穷了,手边只有 100 条有向边,所以他请求你的帮助,请你帮他造出这样的一个有向图,或者告诉他这是不可能的。
输入格式
本题有多组测试数据。
输入的第一行包含一个正整数 q,表示询问次数。接下来 q 行每行包含一个正整数 k,描述一次询问。
输出格式
对于每次询问,若不存在方案,只需要输出一行一个整数 -1
。否则输出多行:第一行两个整数 n,m,分别表示你给出的有向图的点数和边数,你需要保证 1≤n≤101,0≤m≤100。接下来 m 行,第 i 行两个整数 ui,vi,表示一条从 ui 到 vi 的有向边。你需要保证 1≤ui,vi≤n。
2
1
7
1 0
3 6
1 2
1 2
2 3
2 3
1 3
3 2
提示
【数据范围】
对于所有数据,1≤q≤100,1≤k≤7×1015。
本题采用 Subtask 捆绑测试。
Subtask |
分值 |
特殊性质 |
1 |
3 |
k≤100 |
2 |
7 |
存在整数 0≤a,b≤20 使得 k=2a3b |
3 |
10 |
q=1,k=101 |
4 |
k≤103 |
5 |
7 |
k≤104 |
6 |
k≤106 |
7 |
8 |
k≤3×107 |
8 |
k≤8×109 |
9 |
10 |
k≤1012 |
10 |
k≤3×1014 |
11 |
20 |
k≤7×1015 |