编程题
### 问题描述
在一个社区中,有 $ N $ 名居民,他们喜欢参与不同的小组活动。为了满足社区的组织需求,需要重新组织这些小组,使得任意两名居民,至少有一个小组包含其中一人而不包含另一人。
现在需要设计一种小组分配方案,使得小组的总数最少,同时最大的小组(即成员数最多的小组)的成员数也要尽可能少。如果存在多个满足条件的方案,输出任意一种即可。
### 输入格式
输入仅包含一个整数 $ N $,代表社区中居民的数量。
### 输出格式
第一行输出两个用空格分隔的整数,分别表示最小的小组总数和最大小组的最少成员数。
接下来的每一行代表一个小组,每行的第一个数表示该小组的成员数,后面跟着该小组所有成员的编号(编号顺序任意)。
### 样例输入
```
5
```
### 样例输出
```
3 2
2 2 4
2 3 4
1 5
```
### 评测数据规模
- $ 2 \leq N \leq 10^5 $
- 在 10% 的测试用例中,$ N \leq 15 $
- 在另外 20% 的测试用例中,$ N = 2^k $,对某个整数 $ k $