H - Mínimos

Time limit: 2 s
Memory limit: 256 MiB
Languages: C, C++, Java, Tiger, ... (details)

Dado un array x[1...n] y un número m , para todo i ∈ [1... n m +1] es necesario encontrar el mínimo de x[ i ], x[ i + 1], ..., x[ i + m −1] y devolver la suma de estos mínimos.

Input

La primera línea de la entrada contiene dos enteros: n y m (2 ≤ n ≤ 30000000,1 ≤ m n ) separados por espacio. La segunda línea contiene tres enteros: a , b y c (−2^31 ≤ a,b,c ≤ 2^31 −1). La tercera línea tiene los valores de x[1] y x[2] (−2^31 ≤ x [1], x [2] ≤ 2^31 −1). El resto del array es calculado usando la siguiente fórmula:
x[i] = f(a·x[i−2] + b·x[i−1] + c)
Donde f ( y ) retorna −2^31 ≤ z ≤ 2^31 −1 tal que y z es divisible por 2^32.

Output

Imprima un entero — la suma de los mínimos de todos los subarrays de tamaño m del array dado.

Sample test(s)

Input
10 3 1 1 0 0 1
Output
33
Input
1000000 15 283471207 23947205 3 17625384 939393931
Output
-1880787129757474