만드는 중입니다

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

수열과 쿼리와 확률 3

시간 제한1.5초메모리 제한1024 MB

요약
배열에 무작위로 고른 연산을 M번 적용할 때, Q가 S이면 합의 비, P이면 곱의 비의 기댓값을 10^9+7로 나눈 나머지로 구합니다.
난이도

보통10점 중 6점

유형
확률, 수학, 정수론, 누적 합
정답자
아직 제출이 없습니다

문제

합동 세미나를 진행하던 중 1학기 고급반 주제가 수열과 쿼리, 혹은 트리와 쿼리를 연습문제로 다루는 문제들이 대부분이었다. 재우는 1주차에 제곱근 분할법과 Mo's 알고리즘을, 진한이는 6주차에 HLD와 Dynamic Tree DP를, 종우는 7주차와 8주차에 Segment Tree Beats와 PST를 진행했다. 이들 모두 연습문제로 수열과 쿼리, 트리와 쿼리가 주어졌다. 동우는 이 기회에 진한이에게 물어보며 수열과 쿼리 시리즈를 풀기 시작했다.

동우는 수열과 쿼리 시리즈를 풀다가 왜 수열과 쿼리가 확률적으로 주어지지 않는지 의문이 들었다. 이에 다음 문제를 만들었다.

길이가 NN인 수열 A=A1,A2,⋯ ,ANA=A_1,A_2,\cdots,A_N에 아래 연산 쿼리를 총 MM번 시행하고자 한다.

  • 1 ii: AiA_i에 Ai=Ai×iA_i=A_i\times i를 적용한다. (1≤i≤N1\le i\le N)
  • 2 ll rr: 모든 l≤i≤rl\le i\le r에 대해 AiA_i에 Ai=Ai×iA_i=A_i\times i를 적용한다. (1≤l<r≤N1\le l<r\le N)
  • 3 ll rr: 모든 l≤i≤rl\le i\le r에 대해 모든 AiA_i에 Ai=Ai×lA_i=A_i\times l을 적용한다. (1≤l<r≤N1\le l<r\le N)
  • 4 ll rr: 모든 l≤i≤rl\le i\le r에 대해 Ai=Ai×rA_i=A_i\times r을 적용한다. (1≤l<r≤N1\le l<r\le N)

동우는 다음 규칙에 따라 MM개의 쿼리를 각각 독립적으로 결정한다.

  • 가능한 3(N2)+N3\binom{N}{2}+N가지(1번 쿼리 NN가지, 2, 3, 4번 쿼리 각각 (N2)\binom{N}{2}가지) 쿼리에 대해 동일한 확률로 하나의 쿼리를 적용한다. 이때, N=1N=1이라면 1번 쿼리가 항상 적용됨에 유의하자.

동우는 아래 두 질의 쿼리 중 하나를 시행하고자 한다.

  • S: 초기 상태에서 원소의 합을 S0S_0, 최종 상태에서 원소의 합을 S1S_1이라 할 때, S1S0\frac{S_1}{S_0}의 값을 구한다.
  • P: 초기 상태에서 원소의 곱을 P0P_0, 최종 상태에서 원소의 곱을 P1P_1이라 할 때, P1P0\frac{P_1}{P_0}의 값을 구한다.

그러나 성격이 급한 동우는 쿼리를 처리하기 전 질의 쿼리의 답의 기댓값이 알고 싶어졌다. 동우를 도와 구해보자.

입력

첫 번째 줄에 수열의 원소의 개수 N(1≤N≤106)N(1\le N\le 10^6), 연산 쿼리의 개수 M(1≤M≤1018)M(1\le M\le 10^{18})이 공백으로 구분되어 주어진다.

두 번째 줄에 초기 상태의 양의 정수로 이루어진 수열 A1,A2,⋯ ,AN(1≤Ai≤109)A_1,A_2,\cdots,A_N(1\le A_i\le 10^9)이 공백으로 구분되어 주어진다.

세 번째 줄에 동우가 물어본 질의 쿼리 문자 QQ가 주어진다. QQ는 S, P 중 하나이다.

출력

첫 번째 줄에 질의 쿼리의 답의 기댓값을 109+710^9+7로 나눈 나머지를 출력한다.

기약 분수 pq(p≥0,q>0,gcd⁡(p,q)=1)\frac{p}{q}(p\ge 0,q>0,\gcd(p,q)=1)를 109+710^9+7로 나눈 나머지는 q⋅q−1≡1(mod109+7)q\cdot q^{-1}\equiv 1\pmod{10^9+7}을 만족하는 정수 q−1q^{-1}, 즉 qq의 109+710^9+7에 대한 모듈로 곱셈 역원을 이용해 p⋅q−1(mod109+7)p\cdot q^{-1}\pmod{10^9+7}로 정의한다. 정수일 경우 q=q−1=1q=q^{-1}=1이므로 p(mod109+7)p\pmod{10^9+7}를 의미한다.

주어진 조건 내에서 기댓값이 정수 혹은 유리수임을 증명할 수 있으며, 유리수의 경우 기약분수에서 분모가 109+710^9+7의 배수가 아닌 경우만 주어짐이 보장된다.

예제4

  1. 예제 1

    입력
    3 1
    3 2 1
    S
    
    예상 출력
    555555561
    
  2. 예제 2

    입력
    3 1
    3 2 1
    P
    
    예상 출력
    500000009
    
  3. 예제 3

    입력
    3 111111111666666666
    3 2 1
    S
    
    예상 출력
    1
    
  4. 예제 4

    입력
    3 999999999999999964
    3 2 1
    P
    
    예상 출력
    1