luogu#P6250. 分拆

分拆

题目背景

小 W 喜欢分拆。

题目描述

小 W 定义了一种「良好的分拆」:

对于正整数 nn,如果存在 nn 个整数 (a1,a2,,an)(a_1,a_2,\cdots,a_n) 使得 i=1nai=i=1nai=n\sum\limits_{i=1}^na_i=\prod\limits_{i=1}^na_i=n,那么称 nn 是「良好的」,而 (a1,a2,,an)(a_1,a_2,\cdots,a_n)nn 的一个「良好的分拆」。

现在,小 W 给了你一些 nn,他希望你求出这些 nn 分别是不是「良好的」。如果是良好的,请任意输出一个 nn 的「良好的分拆」。

输入格式

第一行一个整数 TT,表示数据组数。

接下来 TT 行,每行一个整数 nn,表示小 W 的一个询问。

输出格式

对于每组数据,输出若干行。

如果 nn 不是「良好的」,那么仅输出一行 NO

否则,第一行输出 YES,接下来一行一个数 aa,表示你的「良好的分拆」中有多少种不同的数,接下来 aa 行,每行两个数 x,yx,y,表示有 xxyy

3
1
2
5
YES
1
1 1
NO
YES
3
1 5
2 1
2 -1

提示

样例解释

n=1n=1 时,(1)(1)11 的一个「良好的分拆」;

n=2n=2 时,22 没有「良好的分拆」;

n=5n=5 时,$5+1+1+(-1)+(-1)=5\times1\times1\times(-1)\times(-1)=5$,所以 (5,1,1,1,1)(5,1,1,-1,-1)55 的一个「良好的分拆」。

数据范围

本题不捆绑测试。
Subtask  1(10  pts)\text{Subtask\;1(10\;pts)}n=1,T=1000n=1,T=1000
Subtask  2(30  pts)\text{Subtask\;2(30\;pts)}n104,T=100n\le 10^4,T=100
Subtask  3(60  pts)\text{Subtask\;3(60\;pts)}T=1000T=1000
对于所有数据,1n1091\le n\le10^9

说明

本题带有 SPJ\text{SPJ}

某个测试点获得满分,当且仅当对于这个测试点的所有 TT 组数据,有:

  • 第一行的答案相同。
  • 如果第一行的答案为 YES,则还要满足 1a201\le a\le 201xn1\le x\le ny×x=yx=x=n\sum y\times x=\prod y^x=\sum x=n

为了便于 SPJ\text{SPJ} 的编写,允许有的 yy 相同,同时请确保在输出文件末尾有且仅有一个换行。

SPJ\text{SPJ} 源码请到云剪贴板查看。