AT_tenka1_2018_d Crossing

题目描述

给定一个整数 $N$。请判断是否存在一组 $\{1,2,\ldots,N\}$ 的子集组 $(S_1, S_2, \ldots, S_k)$,满足以下条件,并在存在时构造出这样的一组。 - 对于 $1,2,\ldots,N$ 中的每个整数,恰好属于 $S_1, S_2, \ldots, S_k$ 中的两个集合。 - 对于 $S_1, S_2, \ldots, S_k$ 中任意两个集合,它们的交集恰好包含一个元素。

输入格式

输入通过标准输入给出,格式如下: > $N$

输出格式

如果不存在满足条件的子集组,输出 `No`。如果存在,先输出 `Yes`,然后按照如下格式输出子集的信息。设 $S_i = \{S_{i,1}, S_{i,2}, \ldots, S_{i,|S_i|}\}$。 如果有多组满足条件的答案,输出任意一组均可。 > $k$ > $|S_1|$ $S_{1,1}$ $S_{1,2}$ $\ldots$ $S_{1,|S_1|}$ > $|S_2|$ $S_{2,1}$ $S_{2,2}$ $\ldots$ $S_{2,|S_2|}$ > $\vdots$ > $|S_k|$ $S_{k,1}$ $S_{k,2}$ $\ldots$ $S_{k,|S_k|}$

说明/提示

### 限制 - $1 \leq N \leq 10^5$ - $N$ 是整数 ### 样例解释 1 取 $(S_1, S_2, S_3) = (\{1,2\}, \{3,1\}, \{2,3\})$,可以验证满足条件。 由 ChatGPT 4.1 翻译