도로
시간 제한4초메모리 제한512 MB
도로 구간에 제설차와 염화제 이벤트를 처리하고, 주어진 분에 구간의 최대 눈 두께를 10^9+7로 나눈 나머지로 구합니다.
문제
도로는 1킬로미터 길이의 구간으로 나뉘며, 구간에는 1부터 까지 번호가 붙어 있다. Johnny는 도로 관리 센터의 관제사로, 여러 차례 폭설이 내리는 동안 한 도로의 제설 작업이 얼마나 효과적이었는지 조사한다.
기상 센터는 폭설의 강도를 두 매개변수 로 알려준다. 폭설의 분째()에는 도로 전체에 밀리미터의 눈이 내린다. 각 폭설은 다음 폭설이 시작하기 직전 분에 끝난다. 첫 폭설은 양의 분에 시작하며, 0분에는 도로에 눈이 없다.
제설 센터는 제설차와 살포차의 정보를 제공한다. 각 경로는 연속된 구간의 일부다.
- 제설차가 t분에 구간을 치우면, t분이 끝난 시점에 그 구간에는 눈이 없다.
- 품질이 s인 염화칼슘을 t분에 구간에 뿌리면, t, t+1, ..., t+s분이 끝난 시점에 그 구간에는 눈이 없다. 서로 다른 염화칼슘은 품질이 같더라도 독립적으로 작용한다. 제설차는 염화칼슘을 제거하지 않는다.
도로 센터는 질의를 보낸다. 각 질의에서는 주어진 분이 끝난 시점에 주어진 구간의 눈 두께 최댓값을 구한다.
입력
첫 줄에 두 정수 과 가 주어진다 (, ). 이어지는 개의 줄에는 다음 네 가지 유형 중 하나의 사건이 한 줄씩 주어진다.
t L a b: t분에 제설차가 a부터 b까지의 구간을 치운다.t S a b s: t분에 살포차가 품질 s의 염화칼슘을 a부터 b까지의 구간에 뿌린다.t ? a b: t분이 끝난 시점에 a부터 b까지의 구간에서 눈 두께의 최댓값을 보고한다.t B f g: t분은 이전 폭설의 마지막 분(있는 경우)이고, t+1분부터 매개변수 f, g인 폭설이 시작된다.
모든 사건에서 , , 이다. t의 값은 사건마다 증가하며, 첫 사건은 항상 B 유형이다.
출력
각 ? 사건에 대해, 지정된 분과 구간에서 눈 두께의 최댓값을 로 나눈 나머지를 한 줄에 출력한다.