#P16619. [GCPC2026]keeping cows

[GCPC2026]keeping cows

题目描述

农夫 Kiki 有 4242 头奶牛。她的牧场可以看作一个网格,每个格子都是边长为 11 米的正方形。

根据德国奶牛周长协会的严格规定,奶牛必须在一个面积恰好为 aa 平方米的封闭区域中吃草。

不幸的是,围栏供应商弄错了订单。Kiki 原本需要大量直线围栏和少量拐角围栏,但供应商送来的全部都是拐角围栏,而且数量多到牧场中都放不下。

一个拐角围栏的形状如下:

....
.O#.
.#..
....

其中:

  • O 表示该围栏的中心;
  • # 表示围栏的两条边;
  • . 表示空格子。

每个拐角围栏都可以旋转,并可以在网格上平移,但必须始终与网格方向对齐。

你需要放置若干拐角围栏,使得存在一个由恰好 aa 个空格子组成的四连通分量,并且该分量被围栏包围。

更严格地说,对于该分量中的每一个内部空格子,它的四个正交相邻格子都必须满足以下二者之一:

  • 也属于该内部空格子的连通分量;
  • 是某个围栏的一部分。

牧场大小为 100×100100\times 100,任何围栏的一部分都不能放在牧场范围之外。

面积为 4 时的两个合法构造和一个非法构造

图 K.1:面积为 44 时的两个合法构造和一个非法构造。左图即样例输出;右图中的四个内部格子并不四连通,因此非法。

输入格式

输入一行一个整数 aa1a50001\le a\le 5000),表示奶牛围栏内部区域必须包含的格子数。

输出格式

第一行输出两个整数 h,wh,w1h,w1001\le h,w\le 100),表示你所使用的矩形区域的高度和宽度。

接下来输出 hh 个长度为 ww 的字符串,只能包含字符 #.O,表示围栏的放置方案。

如果存在多种合法方案,可以输出任意一种。

样例 1

输入

4

输出

4 4
O##O
#..#
#..#
O##O

样例 2

输入

9

输出

7 9
O##OO##.#
#..###O#O
#......#.
O##O.##O.
#..##O...
O##O.....
...#.....