# https://yukicoder.me/problems/no/3715 def main(): K, N = map(int, input().split()) D = list(map(int, input().split())) d_prev = 0 d_nexts = 0 for i in range(K): d_nexts += D[i] - 1 start_n = 0 for i in range(K): d_nexts -= D[i] - 1 end_n = (start_n + D[i] - 1) % N answer = float("inf") most_n = (D[i] // N) + (1 if D[i] % N > 0 else 0) x = start_n + D[i] current_n = (x // N) + (1 if x % N > 0 else 0) if start_n > 0: current_n -= 1 # 全体をシフト if most_n > current_n: if start_n > 0 and d_prev >= start_n: answer = min(answer, start_n) if d_nexts >= N - start_n: answer = min(answer, start_n) # D[i]自体を増やす need_n = start_n if start_n > 0 else N if d_prev >= need_n: answer = min(answer, need_n) need_n = N - end_n if d_nexts >= need_n: answer = min(answer, need_n) if answer == float("inf"): print(-1) else: print(answer) start_n += D[i] start_n %= N d_prev += D[i] - 1 if __name__ == "__main__": main()