노이족과 ICPC의 대전

길이 N인 수열을 1로 초기화한 뒤, 구간 전체를 한 값으로 바꾸는 갱신과 구간 안의 i<j<k에 대한 A_i A_j A_k 합을 10^8로 나눈 나머지로 답하는 질의를 처리합니다. N은 최대 10^9, 질의 수는 최대 10^5입니다.

어려움8세그먼트 트리분할 정복수학조합론아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

노이족은 수학과 컴퓨터에 유별나게 끌리는 유서 깊고 교양 있는 종족이다. 원래는 평화로운 종족이지만, 지금은 숙적인 대륙간 초원 코기(줄여서 ICPC)와 전면전을 벌이고 있다. 전쟁은 몇 년째 이어지고 있고, 어느 쪽도 상대 영토에 발판을 마련하지 못했다.

노이족은 마침내 전쟁을 끝내고 새 정리를 발견하고 수학 문제를 만드는 일상으로 돌아갈 원대한 계획을 세웠다. 무시무시한 지성으로 ICPC를 수학도 컴퓨터도 없는 다른 차원으로 날려 버릴 초병기를 만들어 낸 것이다. (그런 차원이 존재한다는 생각만으로도 노이족은 뼛속까지 오싹해지는데, 그 차원을 발견한 가여운 노이족 한 명은 지금 정신병동에 갇혀 있다. 그건 또 다른 이야기다.) 그런데 ICPC 첩자가 이 계획을 알아냈고, 몰래 숨어든 공작원이 초병기의 설정을 망가뜨렸다.

초병기는 정수 NN개로 이루어진 수열로 설정하며, 노이족은 올바른 설정인지 빠르게 검사하는 방법을 고안했다. 하지만 검사 코드를 짤 수 있는 유일한 노이족이 정신병동에 있어서 도움이 절실하다. 노이족은 당신의 뛰어난 프로그래밍 실력을 전해 듣고 초병기 재설정을 도와 달라고 요청했다.

그들이 보낸 메시지는 이렇다. 위대한 이여, 우리를 도와 달라! 못된 ICPC를 무찌를 프로그램이 필요하다. 올바른 설정을 찾을 때 우리는 설정 수열 AA에 두 연산 중 하나를 수행한다. AL,AL+1,,AR1,ARA_L, A_{L+1}, \dots, A_{R-1}, A_R을 모두 VV로 바꾸거나, Li<j<kRL \le i < j < k \le R을 만족하는 모든 인덱스 ii, jj, kk에 대해 AiAjAkA_i A_j A_k의 합을 구한다.

입력

첫째 줄에 정수 NNQQ가 공백 하나를 사이에 두고 주어진다. NN은 설정 수열의 길이이고, QQ는 노이족이 수행할 연산의 개수이다.

다음 QQ개 줄에는 수열에 수행할 연산이 순서대로 주어지며, 형식은 다음 두 가지 중 하나이다.

  • SET L R V: AL,AL+1,,AR1,ARA_L, A_{L+1}, \dots, A_{R-1}, A_R을 모두 VV로 바꾼다.
  • ASK L R: Li<j<kRL \le i < j < k \le R을 만족하는 모든 인덱스 ii, jj, kk에 대한 AiAjAkA_i A_j A_k의 합을 10810^8으로 나눈 나머지를 출력한다.

설정 수열의 모든 원소는 처음에 1이다.

제한은 다음과 같다.

  • 1N1091 \le N \le 10^9
  • 1Q1051 \le Q \le 10^5
  • 1LRN1 \le L \le R \le N
  • 1V1061 \le V \le 10^6

출력

두 번째 종류의 연산 개수를 MM이라 할 때 MM개 줄을 출력한다. 각 줄에는 Li<j<kRL \le i < j < k \le R을 만족하는 모든 인덱스 ii, jj, kk에 대한 AiAjAkA_i A_j A_k의 합 SS10810^8으로 나눈 나머지를 정수 하나로 출력한다. 범위에 속한 인덱스가 세 개보다 적으면 더할 항이 없으므로 답은 0이다.