H. 棋盘构造
time limit per test
2 seconds
memory limit per test
512 megabytes
input
standard input
output
standard output

有一个 $$$n$$$ 行 $$$m$$$ 列的棋盘,在开始时,棋盘上每一个格子都是空的。

你有足够多的棋子可以放置在棋盘上(当然,每一个格子最多只能放置一个棋子),且需要满足:

  • 第 $$$i$$$ 行($$$1 \leq i \leq n$$$)的棋子加起来恰好有 $$$a_i$$$ 个;
  • 第 $$$i$$$ 列($$$1 \leq i \leq m$$$)的棋子加起来恰好有 $$$b_i$$$ 个;

请你判断是否存在满足要求的放置方案。如果存在,输出任意一种满足要求的方案。

Input

第一行两个正整数 $$$n$$$ 和 $$$m$$$($$$1 \le n, m \le 10^6$$$ 且 $$$n \times m \le 10^6$$$),表示棋盘的尺寸。

第二行 $$$n$$$ 个非负整数 $$$a_1, a_2, \ldots, a_n$$$($$$0 \leq a_i \leq m$$$);

第三行 $$$m$$$ 个非负整数 $$$b_1, b_2, \ldots, b_m$$$($$$0 \leq b_i \leq n$$$);

Output

如果不存在满足要求的方案,仅输出一行,包含一个 $$$\mathtt{NO}$$$。

否则,首先在第一行输出 $$$\mathtt{YES}$$$;接下来的 $$$n$$$ 行,每行包含 $$$m$$$ 个字符,第 $$$i$$$ 行的第 $$$j$$$ 个字符($$$1 \leq i \leq n$$$ 且 $$$1 \leq j \leq m$$$)表示放置完成的棋盘中 $$$i$$$ 行 $$$j$$$ 列的格子的状态。具体的:

  • 用 $$$\mathtt{.}$$$("点"符号,ascii 码 46)表示当前格子是空的;
  • 用 $$$\mathtt{\#}$$$("井号"符号,ascii 码 35)表示当前格子放置了一个棋子;

若存在多种可行的放置方案,任意输出一种即可。

Example
Input
4 3
1 3 2 1
3 1 3
Output
YES
..#
###
#.#
#..