#### Registered Users Only

Please login to utilize this feature.

Do note that this website only supports submissions in C++.

### Symmetric Grid

### Problem Statement

There is an `H × W` grid (`H` vertical, `W` horizontal), where each square contains a lowercase English letter.
Specifically, the letter in the square at the `i`-th row and `j`-th column is equal to the `j`-th character in the string `S _{i}`.

Snuke can apply the following operation to this grid any number of times:

- Choose two different rows and swap them. Or, choose two different columns and swap them.

Snuke wants this grid to be *symmetric*.
That is, for any `1 ≤ i ≤ H` and `1 ≤ j ≤ W`, the letter in the square at the `i`-th row and `j`-th column and the letter in the square at the `(H + 1 - i)`-th row and `(W + 1 - j)`-th column should be equal.

Determine if Snuke can achieve this objective.

### Constraints

`1 ≤ H ≤ 12``1 ≤ W ≤ 12``|S`_{i}| = W`S`consists of lowercase English letters._{i}

### Input

Input is given from Standard Input in the following format:

HWS_{1}S_{2}:S_{H}

### Output

If Snuke can make the grid symmetric, print `YES`

; if he cannot, print `NO`

.

### Sample Input 1

2 3 arc rac

### Sample Output 1

YES

If the second and third columns from the left are swapped, the grid becomes symmetric, as shown in the image below:

### Sample Input 2

3 7 atcoder regular contest

### Sample Output 2

NO

### Sample Input 3

12 12 bimonigaloaf faurwlkbleht dexwimqxzxbb lxdgyoifcxid ydxiliocfdgx nfoabgilamoi ibxbdqmzxxwe pqirylfrcrnf wtehfkllbura yfrnpflcrirq wvcclwgiubrk lkbrwgwuiccv

### Sample Output 3

YES

### Tags

### Subtasks and Limits

Subtask | Score | #TC | Time | Memory | Scoring |
---|---|---|---|---|---|

1 | 100 | 57 | 1s | 256MB | Minimum |

2 | 0 | 3 | 1s | 256MB | Minimum |

### Judge Compile Command

g++-7 ans.cpp -o symmetricgrid -Wall -static -O2 -lm -m64 -s -w -std=gnu++17 -fmax-errors=512