올바른 괄호 문자열(VPS)은 다음과 같이 정의한다.
S가 VPS라면 (S)도 VPS이다.S와 T가 VPS라면 ST도 VPS이다.예를 들어 "(())()", "()()()", "(()())” 등은 VPS이고, "())(()", "(", "(()()()" 등은 VPS가 아니다.
VPS를 좋아하는 태수는 길이가 N인 VPS S를 선물 받았다. 하지만 태수의 위시리스트에 담겨있던 VPS는 T였기에, S의 두 문자를 바꾸는 작업을 최대 N번 해서 T로 만들고 싶었다. 하지만 VPS를 좋아하는 태수는 다음과 같은 조건들을 만족할 때만 두 원소를 바꾸기로 했다.
태수를 위해 S를 T로 바꾸는 방법을 알려주자. 답이 반드시 존재함을 증명할 수 있다.
첫째 줄에 테스트케이스의 개수 C가 주어진다. (1≤C≤5×105)
각 테스트케이스 별로 입력은 다음과 같이 주어진다.
첫째 줄에 정수 N이 주어진다. (1≤N≤106)
둘째 줄에 길이가 N인 VPS S가 주어진다.
셋째 줄에 길이가 N인 VPS T가 주어진다.
모든 테스트케이스의 N의 합은 106을 넘지 않는다.
각 테스트케이스 별로 다음과 같이 출력한다.
첫째 줄에 작업 횟수 X (0≤X≤N)를 출력한다.
둘째 줄부터 X줄에 걸쳐, 바꾸는 두 원소의 인덱스 L R 을 작업 순서에 맞춰 출력한다.
반드시 작업 횟수가 최소가 될 필요는 없다.