未知(version 3)
题号:NC316916
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}一棵有根树若满足从根节点到所有叶子节点的距离(边数)为 \lbrace a_1,a_2,\cdots,a_k\rbrace,且满足 a 其是一个长度为 k排列,则称这是一棵 k 级树。

\hspace{15pt}现在给定两个整数 n,m,以 \texttt{1} 号节点为根节点,请你判断能否恰好使用 n 个节点构造出一棵 m 级树,若可以,输出 \texttt{YES},并且输出任意一种构造方案。否则输出成 \texttt{NO}

【名词解释】
\hspace{15pt}叶子节点:如果一个节点没有任何子节点(即度为 1,且不是根节点,或在只有一个节点的情况下为根节点),则称其为叶子节点。
\hspace{15pt}长度为 n排列:由 1,2,\dots,nn 个整数、按任意顺序组成的数组(每个整数均恰好出现一次)。例如,\{2,3,1,5,4\} 是一个长度为 5 的排列,而 \{1,2,2\}\{1,3,4\} 都不是排列,因为前者存在重复元素,后者包含了超出范围的数。

输入描述:

\hspace{15pt}两个整数 n,m(1\leqq n,m\leqq 2\times 10^5),分别表示树的节点总数和树的级数。

输出描述:

\hspace{15pt}若存在满足题意的答案,在第一行输出 \texttt{YES},接下来的 n-1 行输出任意一个符合条件的答案,否则直接输出 \texttt{NO}

如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

复制
2 3

输出

复制
NO
示例2

输入

复制
6 3

输出

复制
YES
1 2
1 3
3 4
3 5
5 6