小红的树构造
题号:NC307619
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}小红定义一颗树是好树,当且仅当对于所有非叶子节点,它们度数的最大公因数恰好为 k
\hspace{15pt}请你构造一颗包含 n 个节点的好树。

\hspace{15pt}为防止超时,c++选手输出请用'\texttt{\n}'字符代替\texttt{endl}

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\ (1\leqq T\leqq 1000) 代表数据组数,每组测试数据描述如下:
\hspace{15pt}第一行输入两个整数 n,k \left(3 \leqq n \leqq 2\times 10^5, 1 \leqq k < n\right)
\hspace{15pt}除此之外,保证单个测试文件的 n 之和不超过 10^6

输出描述:

\hspace{15pt}对于每组测试数据,新起一行。
\hspace{15pt}如果不存在符合条件的好树,请输出 \texttt{No};否则输出 \texttt{Yes},并在之后的 n - 1 行里,每行输出两个整数 u, v,代表有一条边连接 u,v
\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

复制
2
6 3
3 1

输出

复制
Yes
1 2
3 2
2 4
4 5
4 6
No

说明

第一组数据构造的树如下图所示: