#P16329. [Ucpc2024初赛]种树

[Ucpc2024初赛]种树

题目描述

Seungyeon 想在无限方格中种树。她会选择若干格子撒下种子。种子具有神奇的力量,会根据周围种子的分布长成苹果树或桃树。

若两个都种有种子的格子共用一条边,则称这两颗种子相邻。

  • 相邻种子数量为偶数的种子会长成苹果树;
  • 相邻种子数量为奇数的种子会长成桃树。

例如,下图种下了 55 颗种子。蓝色箭头表示相邻关系。中央种子与 33 颗种子相邻,因此会长成桃树。

最终会得到 33 棵苹果树和 22 棵桃树。

所有种子必须在方格中连通。也就是说,对于任意两颗种子,都必须能够只经过相邻种子从其中一颗移动到另一颗。下面的种植方式不合法。

现在希望种出恰好 AA 棵苹果树和 BB 棵桃树。请判断是否可行;若可行,输出一种种植方案。

输入格式

第一行包含两个非负整数 A,BA,B

A0,B0,1A+B200.A\ge 0, \qquad B\ge 0, \qquad 1\le A+B\le 200.

输出格式

第一行:若可以构造,输出 YES;否则输出 NO

若可以构造,继续输出:

  • 第二行输出网格的行数 RR 和列数 CC
  • 接下来 RR 行,每行输出一个长度为 CC 的字符串。
1R,C2001\le R,C\le 200

字符含义如下:

  • O:该格子中有种子;
  • .:该格子中没有种子。

输出的种子格必须全部连通,并且最终恰好有 AA 棵苹果树和 BB 棵桃树。

样例 1

输入

3 2

输出

YES
3 3
.OO
OOO
...

样例 2

输入

1 0

输出

YES
1 1
O

样例 3

输入

7 0

输出

YES
3 3
.OO
OOO
OO.

样例 4

输入

8 0

输出

YES
4 4
....
.OOO
.O.O
.OOO

样例 5

输入

9 0

输出

NO

样例 6

输入

0 7

输出

NO