两辆缆车车厢在轨道中点交会。CC BY 2.0,作者 Marco Verch,源自 Flickr
你正在阿尔卑斯山滑雪旅行,需要乘坐缆车。然而,通常会有很长的队伍在排队等候缆车带你到山顶。作为一个讨厌在早上浪费时间的人,你希望找到开始排队的最佳时刻,以使排队时间最小化。
缆车站每天开放 $n$ 分钟。一辆缆车车厢一次可运送 $c$ 人,且每分钟整都会有一辆车厢出发。对于今天缆车开放的每一分钟,你都知道到达的人数。
你希望在车站开放期间,恰好在某一分钟的开始时刻到达,就像其他人一样。请注意,你是一个非常礼貌的人,如果有人与你在同一分钟到达,你会让他们先排队,然后你再排在他们后面。
计算你应该在开放时间后多少分钟到达才能使等待时间最小,或者确定今天根本无法乘上缆车。如果有两个时间能达到相同的最小等待时间,输出最早的那个时间。
输入格式
输入包含:
- 第一行包含两个整数 $n$ 和 $c$($1 \le n \le 10^5$,$1 \le c \le 10^9$),分别表示今天缆车开放的分钟数,以及每分钟一辆缆车车厢能运送上山的人数。
- 第二行包含 $n$ 个整数 $a_0, \dots, a_{n-1}$($0 \le a_i \le 10^9$),其中 $a_i$ 表示在缆车开放 $i$ 分钟后新到达的人数。
输出格式
如果今天无法乘上缆车,输出 impossible。否则,输出在开放时间后多少分钟(从 0 开始计数)你应该进入队列,以使等待时间最小化。
样例
输入样例 1
5 1 5 0 0 0 0
输出样例 1
impossible
输入样例 2
5 4 8 6 4 2 0
输出样例 2
0
输入样例 3
10 10 12 11 10 9 8 7 6 5 4 3
输出样例 3
5