C. Грязно
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

Ваша комната это скобочная последовательность $$$s=s_{1}s_{2}\dots s_{n}$$$ длины $$$n$$$. Каждый символ этой строки это либо открывающая круглая скобка '(', либо закрывающая круглая скобка ')'.

За одну операцию вы можете выбрать любую подстроку строки $$$s$$$ и перевернуть ее. Формально, за одну операцию вы можете выбрать подстроку $$$s[l \dots r]=s_l, s_{l+1}, \dots, s_r$$$ и поменять порядок элементов в ней на $$$s_r, s_{r-1}, \dots, s_{l}$$$.

Например, если вы захотите перевернуть подстроку $$$s[2 \dots 4]$$$ строки $$$s=$$$«((()))», она станет равна $$$s=$$$«()(())».

Правильной скобочной последовательностью называется скобочная последовательность, которую можно преобразовать в корректное арифметическое выражение путем вставок между ее символами символов '1' и '+'. Например, скобочные последовательности «()()», «(())» — правильные (полученные выражения: «(1)+(1)», «((1+1)+1)»), а «)(» и «(» — нет.

Префиксом строки $$$s$$$ называется её подстрока, которая начинается с индекса $$$1$$$. Например, для строки $$$s=$$$«(())()» есть $$$6$$$ префиксов: «(», «((», «(()», «(())», «(())(» и «(())()».

По вашему мнению, красивая и чистая комната $$$s$$$ — это такая, что:

  • вся строка $$$s$$$ целиком является правильной скобочной;
  • и ровно $$$k$$$ ее префиксов(включая всю строку $$$s$$$) являются правильными скобочными.

Например, если $$$k = 2$$$, то «(())()» это красивая и чистая комната.

Вы хотите использовать не более $$$n$$$ операций, чтобы сделать вашу комнату красивой и чистой. Операции применяются последовательно, одна за другой.

Гарантируется, что ответ существует. Обратите внимание, что вам не нужно минимизировать количество операций — найдите любой способ достичь требуемой конфигурации за $$$n$$$ или менее операций.

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

В первой строке входных данных записано целое число $$$t$$$ ($$$1 \le t \le 100$$$) — количество наборов входных данных в тесте. Далее следуют описания $$$t$$$ наборов входных данных.

В первой строке записаны два целых числа $$$n$$$ и $$$k$$$ ($$$1 \le k \le \frac{n}{2}, 2 \le n \le 2000$$$, $$$n$$$ четно) — длина $$$s$$$ и необходимое количество правильных префиксов.

Во второй строке записана $$$s$$$ длины $$$n$$$ — данная скобочная последовательность. Все символы строки равны '(' или ')'.

Гарантируется, что в данной строке ровно $$$\frac{n}{2}$$$ символов '(' и ровно $$$\frac{n}{2}$$$ символов ')'.

Сумма всех значений $$$n$$$ по всем наборам входных данных в тесте не превосходит $$$2000$$$.

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

Для каждого из наборов входных данных выведите ответ.

В первой строке выведите число $$$m$$$ ($$$0 \le m \le n$$$) — количество операций. Вам не требуется минимизировать $$$m$$$, это число может быть любым.

В следующих $$$m$$$ строках выведите описания операций, каждая строка должна содержать два целых числа $$$l,r$$$ ($$$1 \le l \le r \le n$$$), описывающих операцию переворота подстроки $$$s[l \dots r]=s_{l}s_{l+1}\dots s_{r}$$$. Операции выполняются последовательно одна за другой.

Итоговая строка $$$s$$$ после применения всех операций должна быть правильной, ровно $$$k$$$ её префиксов (включая $$$s$$$) должны быть правильными.

Гарантируется, что ответ существует. Если есть несколько возможных ответов, вы можете вывести любой.

Пример
Входные данные
4
8 2
()(())()
10 3
))()()()((
2 1
()
2 1
)(
Выходные данные
4
3 4
1 1
5 8
2 2
3
4 10
1 4
6 7
0
1
1 2
Примечание

В первом примере итоговая последовательность — это «()(()())», в которой два префикса корректные, «()» и «()(()())». Обратите внимание, что все операции кроме «5 8» в примере вывода не меняют текущую строку $$$s$$$.