아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

도로

시간 제한4초메모리 제한512 MB

요약
도로 구간에 제설차와 염화제 이벤트를 처리하고, 주어진 분에 구간의 최대 눈 두께를 10^9+7로 나눈 나머지로 구합니다.
난이도

어려움10점 중 9점

유형
세그먼트 트리, 수학, 구현
정답자
아직 제출이 없습니다

문제

도로는 1킬로미터 길이의 구간으로 나뉘며, 구간에는 1부터 nn까지 번호가 붙어 있다. Johnny는 도로 관리 센터의 관제사로, 여러 차례 폭설이 내리는 동안 한 도로의 제설 작업이 얼마나 효과적이었는지 조사한다.

기상 센터는 폭설의 강도를 두 매개변수 f,gf, g로 알려준다. 폭설의 ii분째(i≥1i \ge 1)에는 도로 전체에 f⋅i+gf \cdot i + g밀리미터의 눈이 내린다. 각 폭설은 다음 폭설이 시작하기 직전 분에 끝난다. 첫 폭설은 양의 분에 시작하며, 0분에는 도로에 눈이 없다.

제설 센터는 제설차와 살포차의 정보를 제공한다. 각 경로는 연속된 구간의 일부다.

  • 제설차가 t분에 구간을 치우면, t분이 끝난 시점에 그 구간에는 눈이 없다.
  • 품질이 s인 염화칼슘을 t분에 구간에 뿌리면, t, t+1, ..., t+s분이 끝난 시점에 그 구간에는 눈이 없다. 서로 다른 염화칼슘은 품질이 같더라도 독립적으로 작용한다. 제설차는 염화칼슘을 제거하지 않는다.

도로 센터는 질의를 보낸다. 각 질의에서는 주어진 분이 끝난 시점에 주어진 구간의 눈 두께 최댓값을 구한다.

입력

첫 줄에 두 정수 nn과 qq가 주어진다 (1≤n≤1091 \le n \le 10^9, 1≤q≤3000001 \le q \le 300000). 이어지는 qq개의 줄에는 다음 네 가지 유형 중 하나의 사건이 한 줄씩 주어진다.

  • 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인 폭설이 시작된다.

모든 사건에서 1≤t≤1091 \le t \le 10^9, 1≤a≤b≤n1 \le a \le b \le n, 1≤s,f,g≤1091 \le s, f, g \le 10^9이다. t의 값은 사건마다 증가하며, 첫 사건은 항상 B 유형이다.

출력

각 ? 사건에 대해, 지정된 분과 구간에서 눈 두께의 최댓값을 109+710^9+7로 나눈 나머지를 한 줄에 출력한다.

예제3

  1. 예제 1

    입력
    3 4
    2 B 1 2
    3 ? 2 2
    4 L 1 3
    5 ? 1 3
    
    예상 출력
    3
    5
    
  2. 예제 2

    입력
    1 3
    1 B 1 1
    2 B 3 3
    3 ? 1 1
    
    예상 출력
    8
    
  3. 예제 3

    입력
    5 5
    1 B 1 2
    2 S 1 3 5
    3 ? 3 4
    4 ? 1 1
    10 ? 1 1
    
    예상 출력
    7
    0
    30