아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Quick growth (Additional Challenge)

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

요약
D일이 지나면 각 배열이 모든 연속 부분 배열로 쪼개진다. 이때 만들어지는 모든 배열 원소의 합을 1,000,000,009로 나눈 나머지를 구한다.
난이도

보통10점 중 7점

유형
조합론, 수학, 동적 계획법
정답자
아직 제출이 없습니다

문제

The memory of Bob’s computer contains two interesting things: an array of integers and a virus.

Each midnight the virus becomes active. It takes each array in memory and replaces it with a bunch of new arrays: one for each contiguous subarray of the original array.

For example, if today the memory contains a single array (1,2,1,3), tomorrow it will contain the following arrays: (1), (2), (1), (3), (1,2), (2,1), (1,3), (1,2,1), (2,1,3), and (1,2,1,3).

You are given the length N of Bob’s original array, its contents and the number of days D.

Compute the sum of all elements of all arrays that will be in the memory of Bob’s computer after D days. As this number can be huge, it is sufficient to compute the remainder it gives when divided by 109 + 9.

Assume that the memory of Bob’s computer is sufficiently large to accommodate all the arrays.

입력

The first line of the input file contains an integer T specifying the number of test cases. Each test case is preceded by a blank line.

Each test case consists of two lines. The first line contains the two integers N and D. The second line consists of N non-negative integers that are all less than 100,000: the contents of the original array.

You may assume that N ≤ 100,000 and D ≤ 100,000.

출력

For each test case output a single line with a single integer: the sum of all elements in all arrays after D days, modulo 1,000,000,009.

힌트

You can test it on the following input: N = D = 100000, array = (1,2,3,…,99999,100000). The correct output is 92629705.

예제1

  1. 예제 1

    입력
    3
    
    4 1
    1 2 1 3
    
    1 10
    47
    
    2 10
    1 2
    
    예상 출력
    34
    47
    33