그룹 부분 문자열과 쿼리
Time Limit: 2 SecMemory Limit: 1024 MiB

문제

01만으로 이루어진 길이 이상의 문자열 가 다음 조건 중 하나를 만족하는 경우, 이러한 그룹 문자열이라고 부릅니다.

  • 0이 등장하지 않거나 1이 등장하지 않습니다.
  • 에서 모든 0은 모든 1보다 먼저 등장합니다.
  • 에서 모든 1은 모든 0보다 먼저 등장합니다.

예를 들어, 000, 11, 00111, 110은 그룹 문자열이지만, 1011이나 00100은 그룹 문자열이 아닙니다.

01만으로 이루어진 문자열 에 대해, 의 처음과 끝에서 문자를 원하는 만큼 지워 만들 수 있는 서로 다른 그룹 문자열의 개수라고 정의합니다. 예를 들어, 10110일 때 만들 수 있는 그룹 문자열은 0, 01, 011, 1, 10, 11, 110이 있습니다. 그러므로 10110일 때 의 값은 입니다. 이때 10여러 번 등장하지만 를 구하는 데는 한 번만 세는 것에 유의하세요.

여러분에게 문자열 에 대한 번의 질문이 주어집니다. 초기에 문자열 는 빈 문자열입니다. 각 질문은 다음과 같은 형태입니다.

  • : 문자열 의 끝에 문자 개 붙입니다. 그후 의 값을 구합니다.

이때 질문으로 문자열 에 추가된 문자는 그다음 질문이 주어질 때에도 문자열 에서 지워지지 않고 남아있습니다.

여러분은 각 질문에 대해 충분히 빨리 대답할 수 있을까요?

입력

첫 번째 줄에 정수 가 주어집니다.

두 번째 줄부터 개의 줄에 걸쳐 각 줄에 질문에 대응되는 문자 와 양의 정수 가 주어집니다.

출력

개의 줄에 걸쳐 각 줄에 질문에 대한 정답을 출력합니다.

채점

  • 에 대해 0 또는 1
  • 에 대한 의 합은 이하

서브태스크

번호배점제한
111에 대한 의 합은 이하
223에 대한 의 합은 이하
337에 대한 의 합은 이하
429추가 제한 없음

노트

예제의 각 질문에 대해 새로운 문자열 의 내용, 새롭게 만들 수 있는 그룹 문자열, 그리고 의 값은 다음과 같습니다.

질문문자열 새롭게 만들 수 있는 그룹 문자열
1 "1""1"
0 "10""0", "10"
1 "1011""01", "011", "11"
0 "10110""110"
1 "1011011"없음
1 "101101111""0111", "01111", "111", "1111"
Example Input 1
6
1 1
0 1
1 2
0 1
1 2
1 2
Example Output 1
1
3
6
7
7
11