D. Трансферное окно
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Вы играете в футбольный менеджер. Всего в игре есть n футболистов, из них k футболистов — a1, a2, ..., ak — в данный момент играют за вашу команду. Вы хотите, чтобы в вашей команде играли футболисты b1, b2, ..., bk. Для этого вы можете предлагать другим командам обменять одного из своих игроков на другого игрока.

Для каждой упорядоченной пары различных игроков (x, y) известно, согласится ли команда, управляемая компьютером, обменять вашего игрока x на своего игрока y. Определите, получится ли собрать команду, состоящую из футболистов b1, b2, ..., bk, и если да, выведите порядок обменов, который к этому приведет.

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

В первой строке даны два целых числа n и k (1 ≤ n ≤ 300, 1 ≤ k ≤ n) — общее количество футболистов в игре и количество футболистов в вашей команде.

Во второй строке даны k различных целых чисел ai (1 ≤ ai ≤ n) — текущий состав вашей команды.

В третьей строке даны k различных целых чисел bi (1 ≤ bi ≤ n) — желаемый состав вашей команды.

В каждой из следующих n строк записано по n символов. Символ в i-й строке и j-м столбце равен «1», если управляемая компьютером команда согласится обменять вашего игрока i на своего игрока j, и «0», если не согласится. Символы на главной диагонали равны нулю.

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

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

В случае ответа «YES» на второй строке выведите целое число q (0 ≤ q ≤ n·n) — количество обменов, а затем q строк — последовательность обменов. Каждая из этих q строк должна содержать два различных числа xj и yj (1 ≤ xj ≤ n, 1 ≤ yj ≤ n) — номер игрока вашей команды, которого вы хотите обменять, и номер игрока другой команды, на которого вы хотите его обменять. Обратите внимание, что после j-го обмена игрок yj станет игроком вашей команды, а игрок xj перестанет быть игроком вашей команды.

Если существует несколько последовательностей обменов, ведущих к желаемому результату, разрешается вывести любую. Также обратите внимание, что не требуется минимизировать количество обменов, достаточно лишь, чтобы оно не превышало n·n.

Примеры
Входные данные
5 2
1 2
4 5
00100
00100
00011
00000
00000
Выходные данные
YES
4
1 3
3 4
2 3
3 5
Входные данные
3 2
1 2
2 3
000
001
010
Выходные данные
NO