B2. Обмен символов (усложнённая версия)
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Эта задача отличается от упрощённой версии. В этой версии задачи Уджана может сделать не более $$$2n$$$ обменов. Кроме того, $$$k \le 1000, n \le 50$$$ и необходимо вывести сами обмены. Вы можете взламывать эту задачу тогда, когда решите ее. Но предыдущую только тогда, когда решите обе задачи.

После долгих страданий и многих неуспешных попыток Уджан решил снова попробовать прибраться в своём доме. Вначале он решил привести в порядок свои строки.

У Уджана есть две различные строки $$$s$$$ и $$$t$$$ длины $$$n$$$, которые содержат только строчные буквы английского алфавита. Он хочет сделать их одинаковыми. Так как Уджан ленивый, он выполнит следующую операцию не более $$$2n$$$ раз: он выбирает два индекса $$$i$$$ и $$$j$$$ ($$$1 \le i,j \le n$$$, значения $$$i$$$ и $$$j$$$ могут как совпадать, так и различаться), и меняет местами буквы $$$s_i$$$ и $$$t_j$$$.

Цель Уджан сделать строки $$$s$$$ и $$$t$$$ равными. Уджану не нужно минимизировать количество операций. Его устроит любой способ, который содержит $$$2n$$$ или менее операций.

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

Первая строка содержит одно целое число $$$k$$$ ($$$1 \leq k \leq 1000$$$) — количество наборов входных данных в тесте.

Для каждого набора входных данных первая строка содержит одно целое число $$$n$$$ ($$$2 \leq n \leq 50$$$) — длину строк $$$s$$$ и $$$t$$$.

Следующие две строки содержат $$$s$$$ и $$$t$$$ длины ровно $$$n$$$. Строки содержат исключительно строчные буквы английского алфавита. Гарантируется, что строки различные.

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

Для каждого набора входных данных выведите «Yes», если Уджан может сделать строки одинаковыми за $$$2n$$$ или менее операций, и «No» в противоположном случае. Вы можете выводить каждую букву в любом регистре (строчную или заглавную).

В случае положительного ответа в следующую строку выведите целое число $$$m$$$ ($$$1 \le m \le 2n$$$), где $$$m$$$ — количество операций в ответе. Затем выведите $$$m$$$ строк, где каждая строка содержит два целых числа $$$i, j$$$ ($$$1 \le i, j \le n$$$), которые обозначают что во время соответствующей операции Уджан обменивает символы $$$s_i$$$ и $$$t_j$$$. Вам не нужно минимизировать количество операций. Любой способ сделать это за $$$2n$$$ или менее операций является корректным ответом.

Пример
Входные данные
4
5
souse
houhe
3
cat
dog
2
aa
az
3
abc
bca
Выходные данные
Yes
1
1 4
No
No
Yes
3
1 2
3 1
2 3