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

Заданы $$$n$$$ левых и $$$n$$$ правых ботинок. Каждый ботинок имеет цвет, который задан строчной буквой латинского алфавита или знаком вопроса ('?'). Таким образом, вам заданы две строки $$$l$$$ и $$$r$$$, каждая имеет длину $$$n$$$, где буква $$$l_i$$$ обозначает цвет $$$i$$$-го левого ботинка, а буква $$$r_i$$$ обозначает цвет $$$i$$$-го правого ботинка.

Строчная буква латинского алфавита обозначает конкретный цвет ботинка, а знак вопроса — неопределенный цвет. Два конкретных цвета совместимы, если они в точности совпадают. Неопределенный цвет совместим с любым цветом (не важно — конкретным или неопределенным).

Например, следующие пары цветов совместимы: ('f', 'f'), ('?', 'z'), ('a', '?') и ('?', '?'). Следующие пары цветов не совместимы: ('f', 'g') и ('a', 'z').

Вычислите максимальное количество пар ботинок, которые можно собрать из заданного набора так, что каждая пара состоит из одного левого и одного правого ботинка и цвета ботинок в паре совместимы.

Выведите максимальное количество пар и сами пары. Конечно, каждый ботинок может входить в состав не более одной пары.

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

В первой строке записано целое число $$$n$$$ ($$$1 \le n \le 150000$$$) — количество ботинок на каждую ногу (то есть количество левых и правых ботинок).

Вторая строка содержит $$$l$$$, её длина равна $$$n$$$. Она содержит лишь строчные буквы латинского алфавита или знаки вопроса, $$$i$$$-й символ строки соответствует цвету $$$i$$$-го левого ботинка.

Третья строка содержит $$$r$$$, её длина равна $$$n$$$. Она содержит лишь строчные буквы латинского алфавита или знаки вопроса, $$$i$$$-й символ строки соответствует цвету $$$i$$$-го правого ботинка.

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

Выведите $$$k$$$ — максимальное количество пар ботинок вида «левый и правый ботинок» совместимых цветов, которые можно собрать из заданного набора.

Следующие $$$k$$$ строк должны содержать пары целых чисел $$$a_j, b_j$$$ ($$$1 \le a_j, b_j \le n$$$), где $$$j$$$-я из этих строк содержит индекс левого ботинка в $$$j$$$-й паре (число $$$a_j$$$) и индекс правого ботинка в $$$j$$$-й паре (число $$$b_j$$$). Все значения $$$a_j$$$ должны быть различны, все значения $$$b_j$$$ должны быть различны.

Если существует несколько ответов, выведите любой из них.

Примеры
Входные данные
10
codeforces
dodivthree
Выходные данные
5
7 8
4 9
2 2
9 10
3 1
Входные данные
7
abaca?b
zabbbcc
Выходные данные
5
6 5
2 3
4 6
7 4
1 2
Входные данные
9
bambarbia
hellocode
Выходные данные
0
Входные данные
10
code??????
??????test
Выходные данные
10
6 2
1 6
7 3
3 5
4 8
9 7
5 1
2 4
10 9
8 10