다이아몬드 II

약수 합 수열과 쿼리

출제자 choyj416 · 티어 투표 1명
로그인하고 제출
시간 제한메모리 제한채점 방식맞힌 사람제출한 사람정답 비율
2.5 초 256 MB 케이스 + 생성기 · 전부 맞아야 100점 2명 2명 21%

문제

작년 대회에서 수열과 쿼리 문제를 풀지 못한 철수는 더 어려운 수열 문제로 여러분에게 화풀이하려고 한다. 수열 $S=[S_1, S_2, S_3, \dots]$가 수열 $A=[A_1, A_2, A_3, \dots ]$에 대해 약수 합 수열임은 다음과 같이 정의된다. \begin{itemize} \item 모든 양의 정수 $i$에 대해 $1 \le j \le i$이고 $j$가 $i$의 약수인 모든 정수 $j$에 대해 $A_j$의 합은 $S_i$이다. \end{itemize} 여러분은 양의 정수 $N$, 수열 $A=[A_1, A_2, A_3, \dots]$와 $S=[S_1, S_2, S_3, \dots]$에 대해 모든 양의 정수 $i$에 대해 $S_i=0$으로 정한다. 그 후, 양의 정수 $L$, $R$, $C$가 주어지는 쿼리를 받으면 다음과 같은 작업을 차례대로 수행한다. \begin{itemize} \item 양의 정수 $L$, $R$, $C$가 주어질 때, $L \le X \le R$인 모든 양의 정수 $X$에 대해 $S_X$에 $C$를 더한다. \item 수열 $S$가 수열 $A$의 약수 합 수열이 되도록 수열 $A$를 정한다. 이를 만족하는 수열 $A$가 항상 유일하게 존재함을 보일 수 있다. \item $A_1+A_2+A_3+ \dots +A_N$를 $10^9 +7$로 나눈 나머지를 출력한다. \end{itemize} 이 쿼리들로 인한 수열 $S$의 변화는 누적된다. 수열과 쿼리 문제 정도는 쉽게 풀 수 있는 여러분은 이 문제를 해결할 수 있을 것이다. 쿼리들이 주어지면 이를 수행하여 답을 출력하는 프로그램을 작성해라.

입력

첫째 줄에 양의 정수 $N$과 주어지는 쿼리의 개수 $Q$가 공백을 사이에 두고 주어진다. ($1 \le N \le 10^{10}$, $1 \le Q \le 2 \times 10^5$) 둘째 줄부터 $Q+1$째 줄까지 각 줄에 주어지는 쿼리를 나타내는 세 양의 정수 $L$, $R$, $C$가 공백을 사이에 두고 주어진다. ($1 \le L \le R \le N$, $1 \le C \le 10^{10}$)

출력

주어지는 쿼리를 차례로 수행한 후 출력되는 값을 $Q$개의 줄에 걸쳐 한 줄에 하나씩 순서대로 출력한다.

입출력 예시

입력 1
7 2
1 5 4
2 7 4
출력 1
1000000003
8

힌트

음의 정수 $A$를 $10^9+7$로 나눈 나머지는 $-A \times (10^9+6)$을 $10^9+7$로 나눈 나머지와 같다.