马子哥的奖金
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

    mazige最近参加了一场有悬赏打气球比赛,为了奖金,mazige对这次的比赛势在必得。毕竟mazige因为囊中羞涩好久没有下过馆子了。比赛规则如下:一共有n个气球,每个气球都有一个固定的积分,你只有k发子弹(必须全部用完),每击破一个气球都可以获得其对应的积分,最后你获得的分数是所有获得的积分的乘积。分数最大的选手获得比赛胜利。因为mazige是个神射手,所以可以保证mazige一定会全部射中气球,但是需要你来告诉他,他所能获得的最大的分数在对取模后的结果。
    ※:为了区分正的结果和负的结果,mazige在本题内对负数取模的结果定义为对其正数取模的结果的负值:即

输入描述:

第一行输入两个整数n,k,表示有n个气球和k颗子弹。

第二行输入n个整数a_i,表示每个气球的积分。

输出描述:

每行输出一个整数,表示每个测试样例的结果。
示例1

输入

复制
6 4
-3 -8 5 6 7 3

输出

复制
1008

说明

对于全部的测试点,保证 1 ≤ k ≤ n ≤ 10^5,-10^9 ≤ a_i≤10^9