Gửi bài giải

Điểm: 100,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Người đăng:
Dạng bài
Ngôn ngữ cho phép
C++, Pascal, Python

Cho dãy ~a~ gồm ~n~ phần tử ~a_1, a_2, ..., a_n~.

Hãy chia dãy ~a~ thành ~k~ đoạn liên tục sao cho tổng giá trị lớn nhất của các phần tử của một trong các đoạn này nhỏ nhất có thể.

Input

  • Dòng đầu tiên chứa hai số nguyên dương ~n, k \ (k \le n);~
  • Dòng thứ hai chứa ~n~ số nguyên ~a_1, a_2, ..., a_n \ (1 \le a_i \le 10^9, \ 1 \le i \le n)~.

Output

In ra kết quả của bài toán.

Scoring

  • Subtask 1 [50%]: ~n \le 1000;~
  • Subtask 2 [50%]: ~n \le 10^5.~

Examples

Input
10 4
1 3 2 4 10 8 4 2 5 3
Output
12

Giải thích: Chia dãy thành ~4~ đoạn ~(1, 3, 2, 4), (10), (8, 4), (2, 5, 3)~.