Train Tracking 2

주어진 슬라이딩 윈도 최솟값 배열을 만족하도록 N개 객차에 1 이상 10^9 이하의 정수 라벨을 부여하는 경우의 수를 10^9+7로 나눈 나머지를 구한다. 가능한 배치는 항상 존재한다.

어려움8동적 계획법조합론슬라이딩 윈도우수학아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

Every day the express train goes past the farm. It has NN carriages (1N1051 \leq N \leq 10^5), each with a positive integer label between 11 and 10910^9; different carriages may have the same label.

Usually, Bessie watches the train go by, tracking the carriage labels. But today is too foggy, and Bessie can't see any of the labels! Luckily, she has acquired the sliding window minimums of the sequence of carriage labels, from a reputable source in the city. In particular, she has a positive integer KK, and NK+1N-K+1 positive integers c_1,,c_N+1Kc\_1,\dots,c\_{N+1-K}, where c_ic\_i is the minimum label among carriages i,i+1,,i+K1i, i+1, \dots, i+K-1.

Help Bessie figure out the number of ways to assign a label to each carriage, consistent with the sliding window minimums. Since this number may be very large, Bessie will be satisfied if you find its remainder modulo 109+710^9 + 7.

Bessie's information is completely reliable; that is, it is guaranteed that there is at least one consistent way to assign labels.

입력

The first line consists of two space-separated integers, NN and KK. The subsequent lines contain the sliding window minimums c_1,,c_N+1Kc\_1,\dots,c\_{N+1-K}, one per line.

출력

A single integer: the number of ways, modulo 109+710^9 + 7, to assign a positive integer not exceeding 10910^9 to each carriage, such that the minimum label among carriages i,i+1,,i+K1i, i+1, \dots, i+K-1 is c_ic\_i for each 1iNK+11 \leq i \leq N-K+1.