리스트 가상화
Time Limit: 5 SecMemory Limit: 1024 MiB

문제

한국정보기술진흥원에서 새로 개발한 모바일 어플리케이션의 화면에는 개의 직사각형 모양 항목이 빈틈없이 세로로 나열되어 있다. 위에서 번째 항목의 높이는 이다. 가장 위에 있는 항목의 위쪽 변은 화면의 맨 위와 맞닿아 있다. 여러분은 화면을 조작하는 사용자의 요청 개를 순서대로 처리해야 한다. 어떤 요청에서도 요청 전에 있던 항목들의 순서가 요청 후에 뒤바뀌는 경우는 없다.

  • 1 : 높이가 인 새로운 직사각형 항목이 위에서 번째에 위치하도록 끼워넣는다. 새로운 항목은 인 모든 에 대해서 위에서 번째 항목보다 밑에 있게 된다. 인 모든 에 대해서, 항목을 끼워넣기 전 위에서 번째였던 항목들은 새로운 항목보다 밑으로 가게끔 아래로 움직인다. 움직인 이후 모든 항목은 빈틈없이 나열되어야 한다.
  • 2 : 위에서 번째 항목을 지운다. 인 모든 에 대해서, 항목을 지우기 전 위에서 번째였던 항목들은 모든 항목이 빈틈없이 나열되도록 위로 움직인다.
  • 3 : 화면의 맨 위로부터 만큼 떨어진 위치부터 만큼 떨어진 위치까지의 범위에, 직사각형의 경계를 제외한 내부의 점이 적어도 하나 포함되는 항목의 수를 한 줄에 출력한다.

입력

첫 번째 줄에 처음 화면에 있는 항목의 수 과 요청의 수 가 공백으로 구분되어 주어진다.

두 번째 줄에 각 항목의 높이를 나타내는 정수 이 공백으로 구분되어 주어진다.

세 번째 줄부터 개의 줄에 걸쳐 각 요청이 주어진다. 요청은 다음 형식 중 하나를 따른다.

  • 1 요청 직전에 존재하는 항목의 수
  • 2 요청 직전에 존재하는 항목의 수
  • 3

출력

3 요청이 들어올 때마다, 화면의 맨 위로부터 만큼 떨어진 위치부터 만큼 떨어진 위치까지의 범위에, 직사각형의 경계를 제외한 내부의 점이 적어도 하나 포함되는 항목의 수를 한 줄에 출력한다.

Example Input 1
5 9
5 3 2 3 1
3 8 16
1 5 5
3 8 23
2 3
3 4 19
3 6 12
2 3
1 5 3
3 7 9
Example Output 1
3
4
5
3
2
Example Input 2
5 20
5 1 1 4 4
3 5 14
2 5
3 2 11
3 6 20
1 3 2
3 1 14
1 4 5
2 5
1 4 4
3 6 16
1 4 4
3 0 10
3 3 9
2 2
3 15 24
3 2 9
2 4
2 1
1 5 4
3 19 20
Example Output 2
4
4
2
5
3
4
4
2
3
0