시간을 달리는 비타로
시간 제한3초메모리 제한512 MB
도시가 일렬로 이어져 있고 각 도로는 통행 가능한 시간 구간이 정해져 있습니다. 구간을 바꾸는 갱신과 최소 되감기 횟수를 구하는 질의를 처리합니다.
문제
비버랜드에는 개의 도시가 있고, 1번부터 번까지 번호가 붙어 있다. 번째 () 도로는 번 도시와 번 도시를 양방향으로 잇는다. 비버랜드의 하루는 1 000 000 000개의 단위시간으로 나뉘어 있으며, 이 단위시간을 쵸라고 부른다. 하루가 시작하고 쵸가 지난 시점을 시각 라고 한다. 도로 하나를 건너는 데에는 1쵸가 걸린다. 번째 도로는 시각 부터 시각 사이에만 건널 수 있다. 정확히는, 을 만족하는 시각 에 번 도시 또는 번 도시를 떠나, 시각 에 다른 도시에 도착해야 한다.
비타로는 비버랜드에 사는 평범한 비버다. 지각을 자주 한 비타로는 이를 고치려고 애쓰다가 시간을 거슬러 올라갈 수 있는 능력을 얻었다. 이 능력을 한 번 쓰면 1쵸 뒤로 간다. 다만 어제로는 갈 수 없다. 시각 0과 시각 1 사이에 능력을 쓰면 시각 0으로 돌아간다. 이 능력은 도시에 있을 때만 쓸 수 있다. 능력을 써도 비타로의 위치는 변하지 않는다.
능력을 쓰면 비타로는 피곤해진다. 능력을 가장 적게 쓰는 이동 방법을 찾으려고 비타로는 번의 사고실험을 했다. 사고실험의 번째 단계에서는 다음 중 하나를 한다.
- 번째 도로를 건널 수 있는 시각을 바꾼다. 바꾼 뒤에는 시각 부터 시각 사이에만 번째 도로를 건널 수 있다.
- 시각 에 번 도시에 있을 때, 시각 에 번 도시로 이동하는 데 필요한 능력 사용 횟수의 최솟값을 구한다.
입력
첫 줄에 과 가 주어진다. 이어지는 개의 줄에는 각각 와 가 주어진다. 그 다음 개의 질의가 한 줄에 하나씩 주어진다. 질의는 두 형식 중 하나이다.
- 이면 , , , 네 개의 정수가 주어진다.
- 이면 , , , , 다섯 개의 정수가 주어진다.
출력
인 각 질의마다 필요한 능력 사용 횟수의 최솟값을 질의 순서대로 한 줄에 하나씩 출력한다.
제한
- .
- .
- ().
- ().
- (, ).
- (, ).
- (, ).
- (, ).
- (, ).
- (, ).