시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
3 초 (추가 시간 없음) 1024 MB 144 47 42 60.870%

문제

드디어 산업기능요원 복무를 마친 키파는 버거운 직장에서 벗어나 새로운 직업에 도전하고자 햄버거집을 차렸다. 키파는 케이크를 여러 차례 만들면서 빵은 좀 구워 봤지만 햄버거를 만드는 것은 처음이었기 때문에, 위아래의 구분이 있는 빵을 적당히 구워서 햄버거 패티로 햄버거가 들어간 탄수화물 폭탄의 버거운 버거를 만들어 팔기로 했다.

burgerish-burger

버거운 버거의 예시.

버거운 버거의 엄밀한 정의는 다음과 같다.

  • 속이 위로 온 빵 X 위에 속이 아래로 온 빵 Y를 올린 것은 버거운 버거이다. 이때 X를 Y의 대응하는 쌍, Y를 X의 대응하는 쌍이라 정의하자.
  • 속이 위로 온 빵 X 위에 버거운 버거를 올리고, 그 위에 속이 아래로 온 빵 Y를 올린 것은 버거운 버거이다. 마찬가지로 이때 X를 Y의 대응하는 쌍, Y를 X의 대응하는 쌍이라 정의하자.
  • 버거운 버거 위에 버거운 버거를 올린 것은 버거운 버거이다.
  • 위 세 규칙으로 만들 수 없는 것은 버거운 버거가 아니다.

키파는 총 N개의 빵 굽는 기계를 일렬로 세워 두고 동시에 다루고 있다. 하나의 기계는 빵을 하나만 구울 수 있다. 가장 왼쪽의 것부터 오른쪽으로 순서대로 1부터 번호를 붙이자. 키파가 가게를 운영하는 도중에 다음 둘 중 하나의 상황이 Q번 발생할 수 있다.

  • a번 기계부터 b번 기계까지의 빵이 곧 타려고 하기 때문에, 각각 뒤집어 줘야 한다.
  • 손님이 a번 기계부터 b번 기계까지의 빵을 차곡차곡 쌓아 주기를 원한다. 즉, 이 과정 중 빵을 뒤집어 쌓으면 안 되고, 가장 아래에 a번 기계에서 나온 빵, 그 위에 (a+1)번 기계에서 나온 빵, 이렇게 하여 가장 위에 b번 기계에서 나온 빵이 순서대로 쌓여야 한다. 키파는 기계에 빵이 없으면 재료가 다 떨어진 것처럼 보인다고 생각했기 때문에, 한 주문이 끝난 이후 그 주문을 받기 이전의 상태대로 빵의 위아래를 맞춰서 채워 둔다.

그러나 손님들이 햄버거를 만들기를 원하는 빵을 쌓았을 때, 어떤 빵은 대응하는 쌍이 존재하지 않아 버거운 버거로서 실격일 수 있다. 키파는 각 손님의 주문대로 빵을 쌓은 뒤, 이 빵을 버거운 버거로 만들기 위해 쌓아둔 빵의 순서를 유지하면서 미리 구워 둔 빵을 최소한으로 집어넣고자 한다. 키파는 손님들의 건강에 관심이 많기 때문에 각 주문마다 버거운 버거의 높이, 즉 버거운 버거에 들어간 빵의 개수를 알고자 한다. 이를 구하는 프로그램을 작성해서 키파를 도와 주자.

입력

첫 줄에 양의 정수 N이 주어진다.

둘째 줄에 길이가 N이고 ()로만 구성된 문자열이 주어진다. 모든 1 ≤ iN에 대해 i번째 문자가 (인 경우 속이 위로 온 빵이 i번 기계에, )인 경우 속이 아래로 온 빵이 i번 기계에 들어 있다는 의미이다.

셋째 줄에 양의 정수 Q가 주어진다.

넷째 줄부터 Q개의 줄에 세 개의 양의 정수 t, a, b로 상황이 주어진다. t는 2 이하이며, 1 ≤ abN이다.

t = 1인 경우 a번 기계부터 b번 기계까지의 빵을 뒤집어 줘야 함을 의미한다.

t = 2인 경우 a번 기계부터 b번 기계까지의 빵을 꺼내 버거운 버거로 만들어 달라는 주문이 들어왔음을 의미한다.

출력

각 주문(t = 2)마다 버거운 버거의 높이를 한 줄에 하나씩 출력한다.

제한

  • 1 ≤ N ≤ 1,000,000
  • 1 ≤ Q ≤ 300,000

예제 입력 1

4
(()(
5
1 2 3
2 1 4
1 1 4
1 2 2
2 3 4

예제 출력 1

6
4

입력 예제에서는 총 다섯 번의 상황이 발생한다.

첫 번째 상황은 2번 기계부터 3번 기계까지에 들어 있는 빵을 모두 뒤집어 주어야 하는 상황이다. 기계 안에 있는 빵을 하나씩 뒤집음에 유의하라.

sample1

두 번째 상황은 손님이 1번 기계부터 4번 기계까지의 빵을 모두 꺼내 버거운 버거를 만들어 달라는 주문이다. 빵을 꺼내서 쌓으면 왼쪽 아래와 같이 되고, 두 개의 빵을 추가해 높이 6의 버거운 버거를 만들 수 있으며, 이보다 높이가 더 낮은 버거운 버거를 만들 수는 없다. 빵을 추가할 때는 기존에 쌓여 있던 빵의 순서는 유지되어야 하며, 기존 빵을 뒤집을 수 없음에 유의하라.

sample2

세 번째 상황은 1번 기계부터 4번 기계까지에 들어 있는 빵을 모두 뒤집어 주어야 하는 상황이다. 첫 번째 주문을 처리했지만, 키파는 기계에 빵이 비는 것을 싫어하기 때문에 모두 원래 방향대로 채워 두었음에 유의하라.

sample3

네 번째 상황은 2번 기계에 들어 있는 빵을 뒤집어 주어야 하는 상황이다.

sample4

다섯 번째 상황은 손님이 3번 기계부터 4번 기계까지의 빵을 모두 꺼내 버거운 버거를 만들어 달라는 주문이다. 빵을 꺼내서 쌓으면 왼쪽 아래와 같이 되고, 두 개의 빵을 추가해 높이 4의 버거운 버거를 만들 수 있으며, 이보다 높이가 더 낮은 버거운 버거를 만들 수는 없다. 빵을 추가할 때 기존에 쌓아둔 빵과 빵 사이뿐만 아니라 가장 위쪽 혹은 아래쪽에도 넣을 수 있으며, 빵을 넣는 방향은 상관없음에 유의하라.

sample5