在他著名的旅程中,奥德修斯(Odysseus)访问了由风之守护者埃俄罗斯(Aeolus)统治的埃奥利(Aeoli)岛。奥德修斯在那里度过了一个月,休息并向埃俄罗斯讲述他故事中引人入胜的曲折情节。一天晚上,奥德修斯问埃俄罗斯,他是否能够在一个特定大小的环面地图上建立任意的风向循环。
正式地,考虑一个 $n \times m$ 的矩形网格。该网格是环面(toroidal)的,这意味着最上方的水平网格边与最下方的水平网格边等同,最左侧的垂直网格边与最右侧的垂直网格边等同。因此,总共有 $2nm$ 条不同的网格边。我们将从上往下数第 $i$ 行、从左往右数第 $j$ 列的单元格表示为单元格 $(i, j)$(两个索引均从 0 开始)。
将“风”定义为给每条网格边任意分配的整数。这些数字的表示方法如下图所示,即 $r_{i,j}$ 是分配给网格单元 $(i, j)$ 上边界的整数,$c_{i,j}$ 是分配给网格单元 $(i, j)$ 左边界的整数。请注意,由于网格是环面的,因此没有独立定义的 $r_{n,j}$ 和 $c_{i,m}$ 值,但为了简单起见,我们定义 $r_{n,j}$ 等于 $r_{0,j}$,且 $c_{i,m}$ 等于 $c_{i,0}$。
$r_{i,j}$ 的正值对应于从左向右流动的风,负值对应于从右向左流动的风。$r_{i,j}$ 的绝对值定义了风流量的大小。类似地,正的 $c_{i,j}$ 对应于从上向下流动的风,负的 $c_{i,j}$ 对应于从下向上流动的风。
埃俄罗斯能够制造单位气旋(cyclone)和反气旋(anticyclone)。在网格单元 $(i, j)$ 周围添加一个单位气旋会使 $r_{i+1,j}$ 和 $c_{i,j}$ 增加 1,并使 $r_{i,j}$ 和 $c_{i,j+1}$ 减少 1;非正式地,这意味着我们在单元格 $(i, j)$ 周围逆时针方向添加了一个单位的风流。添加一个单位反气旋的效果则完全相反:$r_{i+1,j}$ 和 $c_{i,j}$ 减少 1,$r_{i,j}$ 和 $c_{i,j+1}$ 增加 1。显而易见,在同一个单元格中添加一个气旋和一个反气旋不会改变任何东西。
气旋与反气旋
奥德修斯向埃俄罗斯发起挑战,声称他无法通过从零风速(即所有边上的风值均为零)开始,制造若干个气旋和反气旋来获得给定的风向分布。请编写一个程序来判断这是否可行。
输入格式
第一行包含两个整数 $n$ 和 $m$($2 \le n, m \le 500$),表示网格的尺寸。
接下来的 $n$ 行定义了目标风向。在接下来的第 $i$ 行中,有 $2m$ 个整数 $r_{i,0}, c_{i,0}, r_{i,1}, c_{i,1}, \dots, r_{i,m-1}, c_{i,m-1}$($-10^7 \le r_{i,j}, c_{i,j} \le 10^7$)。
输出格式
如果可以通过制造若干个气旋和反气旋来获得给定的风向分布,则输出 "Yes"(不带引号)。否则,输出 "No"(不带引号)。
样例
输入样例 1
2 3 -1 -2 0 0 -3 2 1 0 0 1 3 -1
输出样例 1
Yes
输入样例 2
2 2 0 0 0 1 1 0 -1 -1
输出样例 2
No
说明
获得第一个样例中风向分布的一种可能方法是:在单元格 $(0, 2)$ 周围制造两个气旋,在单元格 $(1, 2)$ 周围制造一个反气旋,并在单元格 $(1, 0)$ 周围制造一个反气旋。