마법의 가방
시간 제한1.5초메모리 제한1024 MB
n개의 값이 든 배열에서 같은 길이의 두 구간을 맞바꾸는 연산과, 구간 안에서 a 이상 b 이하인 값의 개수를 세는 질의를 처리합니다.
문제
뉴트 스캐맨더의 가방에는 마리의 마법 동물과 같은 수의 칸이 있습니다. 칸은 1부터 까지 번호가 매겨져 있습니다. 각 칸에는 정확히 한 마리의 동물이 들어 있습니다. 각 생명체에는 위험도 가 있습니다. 동물들은 매우 활발해서 한곳에 머무르기를 싫어하고, 그래서 가방 안에서 계속 자리를 바꿉니다.
번 칸부터 번 칸까지 이어진 동물의 묶음을 구간이라고 합니다.
분 동안 두 종류의 사건이 일어났습니다.
- 길이가 같고 겹치지 않는 두 동물 구간이 자리를 맞바꿉니다. 구간 부터 까지가 구간 부터 까지와 바뀝니다. 정확히는 가 부터 까지의 각 값일 때, 칸 의 동물이 칸 의 동물과 자리를 바꿉니다.
- 동물학자가 구간 부터 까지에 있는 동물 가운데 위험도 가 이상 이하인 동물의 수를 묻습니다.
입력
첫 줄에 칸의 수 과 질의의 수 이 주어집니다 (; ).
둘째 줄에는 길이 의 수열 가 주어집니다. 이는 각 동물의 위험도입니다 ().
이어지는 개의 줄마다 질의의 종류 이 먼저 나옵니다 ().
이면 자리 교환을 나타내는 네 수 , , , 가 이어서 주어집니다. 두 구간은 겹치지 않고 길이가 같습니다 (, ).
이면 동물학자의 질문을 나타내는 네 수 , , , 가 이어서 주어집니다 (, ).
출력
종류가 2인 각 질의에 대해, 조건을 만족하는 동물의 수를 출력합니다.