피보나치 수는 다음과 같이 정의된다.
피보나치 기계는 정수 레지스터 n개로 이루어진 수열 ⟨i1,i2,…,in⟩ 을 관리하며, 처음에는 모든 레지스터가 0이다. 이 기계는 두 가지 연산을 제공한다.
피보나치 기계를 시뮬레이션하는 프로그램을 작성하라.
첫 번째 줄에 레지스터의 개수 n과 연산의 개수 k가 공백으로 구분되어 주어진다 (1≤n,k≤100000). 이어지는 k개의 줄에는 각각 하나의 연산이 주어지며, 문자 하나와 두 정수 a, b (1≤a≤b≤n)로 구성된다.
D a b 는 구간 [a,b] 에 더하기 연산을 수행한다.S a b 는 구간 [a,b] 에 합 연산을 수행한다.합 연산 S 는 적어도 한 번 이상 주어진다.
각 S 연산마다 구한 피보나치 수들의 합을 109+7 로 나눈 나머지를 한 줄에 하나씩 출력한다.
예시에서 마지막 질의를 수행하는 시점의 레지스터는 ⟨1,3,4,3,2⟩ 이므로, S 2 3 의 결과는 F(3)+F(4)=2+3=5 이다.