만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

주기 수열

시간 제한6초메모리 제한256 MB

요약
n개의 정수로 만들어지는 수열에서 인덱스 a부터 b까지 모든 부분구간의 f값 합을 10^9+7로 나머지 구해야 합니다.
난이도

어려움10점 중 9점

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

문제

찌아키에게 정수 nn개 s0,s1,…,sn−1s_0, s_1, \dots, s_{n-1}이 있다. 찌아키는 다음 방식으로 무한 수열 SS를 정의한다.

Sk=sk mod n+n⋅⌊kn⌋S_k = s_{k \bmod n} + n \cdot \left\lfloor \frac{k}{n} \right\rfloor

여기서 kk는 0부터 시작하는 인덱스이다.

연속 부분 수열 S[l..r]S[l..r]에 대해 cntxcnt_x를 S[l..r]S[l..r]에 나타나는 xx의 개수라고 하자. 그러면 S[l..r]S[l..r]의 값은 다음과 같다.

f(l,r)=∑xx⋅cntx2f(l,r)=\sum_{x} x \cdot cnt_x^2

두 정수 aa, bb (a≤ba \le b)에 대해 다음 값을 구하라.

(∑a≤l≤r≤bf(l,r)) mod (109+7)\left(\sum_{a \le l \le r \le b} f(l,r)\right) \bmod (10^9+7)

입력

여러 개의 테스트 케이스가 주어진다. 첫 줄에 테스트 케이스의 개수 TT가 주어진다. 각 테스트 케이스는 다음과 같다.

첫 줄에 세 정수 nn, aa, bb (1≤n≤20001 \le n \le 2000, 0≤a≤b≤10180 \le a \le b \le 10^{18})가 주어진다.

둘째 줄에 nn개의 정수 s0,s1,…,sn−1s_0, s_1, \dots, s_{n-1} (0≤si≤1090 \le s_i \le 10^9)이 주어진다.

모든 테스트 케이스의 nn의 합은 2⋅1042 \cdot 10^4를 넘지 않는다.

출력

각 테스트 케이스마다 답을 정수로 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    4
    3 2 6
    2 1 3
    5 2 7
    2 1 5 1 2
    4 4 8
    2 1 5 17
    3 5 9
    2 5 2
    
    예상 출력
    179
    268
    369
    437