U600933 海啸谜题Pro

题目背景

(题目提供者:[_Handou](http://www.luogu.com.cn/user/1252271)&[qiaochu](http://www.luogu.com.cn/user/809639)) # 此题无数据 @数据组

题目描述

海啸谜题是一种有趣的谜题 玩家会得到一个 $n\times m$ 的网格,如: ``` |_|_|_|_| |_|_|_|_| ``` 是一个$ 2 \times 4$ 的网格。 对于每一个方格 $(i , j)$,规定与其相邻的右侧格子为 $(i , j+1)$,与其相邻的下方格子为 $(i+1 , j)$。特殊地,我们规定左上角的格子为 $(0 , 0)$。 网格中每一个格子的初始状态为白色(```|_|```),玩家将按照以下规则将网格中每一个格子填充为黑色(```|#|```)或白色(```|_|```): 我们定义 $row[i]$ 表示在我们要填的方格中第 $i$ 行要填多少个黑色格子,定义 $col[j]$ 表示在我们要填的方格中第 $j$ 列要填多少个黑色格子。你要根据 $row$ 数组和 $col$ 数组将方格填充完整。 我们再定义海啸谜题答案的字典序: 我们有两个已经填好的海啸谜题 ``` 1 1 1 1 1 1 1 |#|_|_| 1 |_|#|_| 1 |_|#|_| 1 |#|_|_| 1 |_|_|#| 1 |_|_|#| ``` 规定一个格子 $(i,j)$ 的编号为 $i\times m+j$。 我们将两个海啸谜题的答案从双方编号最小的黑色格子开始比较。如果两个黑色格子编号不同,拥有编号较小的格子的答案的字典序小。如果两个黑色格子编号相同,就比较双方编号第二小的黑色格子,以此类推。上方样例里字典序小的是第一个答案。 现在,你判断一个海啸谜题是否有解。如果没有,输出 ```NO```。否则输出一个字典序最小的答案。

输入格式

第一行两个整数 $n,m$。 第二行 $n$ 个整数,表示 $row$ 数组。 第三行 $m$ 个整数,表示 $col$ 数组。

输出格式

输出一个字典序最小的答案。如果无解,输出```NO```。

说明/提示

对于 $100%$ 的数据:$1\le n,m \le 2\times10^2$,$0\le row[i] \le m$,$0\le col[i] \le n$。