B. Коровоконг решает пазл
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Коровоконг обожает собирать пазлы.

Сейчас у него есть два одинаковых кусочка пазла, из которых требуется собрать прямоугольник. Каждый из кусочков описывается прямоугольником n на m, в каждой клетке которого стоит символ «X», если эта клетка является частью кусочка, и «.» если нет. Гарантируется, что все клетки кусочка образуют 4-связную (связную по стороне) область. Для лучшего понимания того, как задаётся один кусочек пазла, прочитайте формат входных данных и посмотрите на примеры.

Кусочки пазла очень тяжёлые, поэтому Коровоконг не может вращать или переворачивать их, однако разрешается делать параллельный перенос. Разумеется, после совмещения двух кусочков они не должны пересекаться.

Во входных данных вам даётся описание одного из двух одинаковых кусочков. Определите, можно ли совместить два кусочка и получить прямоугольник. Прямоугольник должен быть сплошным, то есть не должен содержать ни одной пустой клетки внутри или на границе. Не забывайте, что Коровоконг не может поворачивать или переворачивать кусочки пазла и что после наложения друг на друга кусочки не должны пересекаться, то есть никакие два «X» из разных кусочков не могут занимать одну клетку.

Входные данные

В первой строке входных данных записаны два числа n и m (1 ≤ n, m ≤ 500) — размеры прямоугольника, описывающего один кусочек пазла.

В следующих n строках содержится описание кусочка пазла. Каждая из них имеет длину m и состоит только из символов «.» и «X». Символ «X» означает, что данная клетка является частью кусочка, а «.» означает пустую клетку.

Гарантируется, что описание кусочка содержит хотя бы один символ «X> и что все «X» образуют 4-связную (то есть связную по стороне) область.

Выходные данные

Выведите «YES», если Коровоконг может собрать прямоугольник, и «NO» в противном случае.

Примеры
Входные данные
2 3
XXX
XXX
Выходные данные
YES
Входные данные
2 2
.X
XX
Выходные данные
NO
Входные данные
5 5
.....
..X..
.....
.....
.....
Выходные данные
YES
Примечание

В первом примере можно собрать прямоугольник следующим образом:


111222
111222

Во втором примере без использования поворотов и переворотов собрать прямоугольник нельзя.

В третьем примере можно сдвинуть один из кусочков на один вправо и получить следующий прямоугольник:


.....
..XX.
.....
.....
.....