Даны две матрицы \(A\) и \(B\) размером \(n \times m\), заполненные целыми числами от \(0\) до \(10^9\). Вы можете выполнять следующие операции над матрицей \(A\) в любом порядке любое количество раз:
- &=: выбрать два целых числа \(i\) и \(x\) (\(1 \le i \le n\), \(x \ge 0\)) и заменить каждый элемент в строке \(i\) на результат побитового И между числом \(x\) и этим элементом. Формально, для каждого \(j \in [1, m]\) элемент \(A_{i,j}\) заменяется на \(A_{i,j} \text{ & } x\);
- |=: выбрать два целых числа \(j\) и \(x\) (\(1 \le j \le m\), \(x \ge 0\)) и заменить каждый элемент в столбце \(j\) на результат побитового ИЛИ между числом \(x\) и этим элементом. Формально, для каждого \(i \in [1, n]\) элемент \(A_{i,j}\) заменяется на \(A_{i,j} \text{ | } x\);
В разных операциях можно выбирать разные значения \(x\).
Определите, возможно ли преобразовать матрицу \(A\) в матрицу \(B\) с помощью нескольких (возможно, нуля) указанных операций.
Выходные данные
Для каждого набора входных данных выведите Yes, если можно преобразовать \(A\) в \(B\), или No в противном случае. Каждую букву можно выводить в любом регистре.
Примечание
Рассмотрим второй набор входных данных и приведем последовательность операций, позволяющих получить из матрицы \(A\) матрицу \(B\):
Изначально матрица выглядит так:
\(\begin{bmatrix} 10&10\\ 42&42\\ \end{bmatrix}\)
Применим операцию первого типа с параметрами \(i = 1\) и \(x = 0\). В результате получим матрицу:
\(\begin{bmatrix} 0&0\\ 42&42\\ \end{bmatrix}\)
Применим операцию первого типа с параметрами \(i = 2\) и \(x = 0\). В результате получим матрицу:
\(\begin{bmatrix} 0&0\\ 0&0\\ \end{bmatrix}\)
Применим операцию второго типа с параметрами \(j = 1\) и \(x = 21\). В результате получим матрицу:
\(\begin{bmatrix} 21&0\\ 21&0\\ \end{bmatrix}\)
Применим операцию второго типа с параметрами \(j = 2\) и \(x = 21\). В результате получим матрицу:
\(\begin{bmatrix} 21&21\\ 21&21\\ \end{bmatrix}\)
Таким образом, мы преобразовали матрицу \(A\) в матрицу \(B\).