Checkered Pattern

Time Limit : 2 sec, Memory Limit : 262144 KB

市松模様

あなたはW×H 個のマスから成る方眼紙を持っており、それぞれのマスは白か黒で塗られている。あなたは、この方眼紙に対して「任意の2つの行を入れ替える操作」「任意の2つの列を入れ替える操作」をそれぞれ好きな回数だけ、好きな順序で行うことができる。あなたはこの方眼紙で市松模様を作りたいと思っている。市松模様とは、以下のように白と黒の正方形を交互に配した模様である(下の図はW=5,H=5 の場合である)。


方眼紙の情報を入力とし、その方眼紙で市松模様が作れるかどうか判定するプログラムを作成せよ。

Input

入力は以下の形式で与えられる。

W H
c1,1 c1,2 ... c1,W
c2,1 c2,2 ... c2,W
:
cH,1 cH,2 ... cH,W

1行目に方眼紙の横方向のマスの数W (2≤W≤1000)と縦方向のマスの数H(2≤H≤1000)が与えられる。続く H 行に ij 列目のマスの色を表す整数ci,j が与えられる。ci,j が0 のとき白、1 のとき黒色のマスを表す。

Output

市松模様を作れる場合は「yes」、作れない場合は「no」と1行に出力する。

Sample Input 1

3 2
1 1 0
0 0 1

Sample Output 1

yes

Sample Input 2

2 2
0 0
1 1

Sample Output 2

no

Source: PC Koshien 2017 , All-Japan High School Programming Contest, Aizu-Wakamatsu, Japan, 2017-11-3
http://web-ext.u-aizu.ac.jp/pc-concours/