Problem: problem

AOR Ika got a water tank with a size of $ 1 $ in length and $ N $ in width. The aquarium is tall enough to hold water. The aquarium has $ N-1 $ partitions and is evenly spaced into $ N $ compartments. When water was poured here, the height of the water in each section became $ a_i $.

AOR Ika decided to remove some dividers and reduce the number of compartments to $ M $ or less. When you have removed the dividers, find the maximum sum of the water heights in each compartment.

The thickness of the partition can be ignored.



input

$ N \ M $
$ a_1 \ cdots a_N $

output

Output the maximum value of the total water height of each section in one line. Also, output a line break at the end. It is acceptable if the relative or absolute error is less than or equal to $ 10 ^ {-6} $.

Example

Input

5 3
9 1 2 3 9


Output

20.000000

Solution (in CPP):

Solution:
#include <iostream>
using namespace std;

long long a[505];
// imos
long long b[505];
// dp[i][j] := iまでをj区間にした時の最大値
double dp[505][505];

double rec(int n, int m){
	if (dp[n][m] != 0) return dp[n][m];
	double res = 0;
	if (m == 1) return dp[n][m] = b[n]/(double)n;
	for (int i = n-1; i > 0; i--){
		double tmp = rec(i, m-1) + (b[n] - b[i])/(double)(n-i);
		res = max(res, tmp);
	}
	res = max(res, b[n]/(double)n);
	return dp[n][m] = res;
}

int main() {
	int N, M; cin >> N >> M;
	for (int i = 1; i <= N; i++){
		cin >> a[i];
		b[i] = a[i];
	}
	for (int i = 2; i <= N; i++){
		b[i] += b[i-1];
	}
	printf("%f\n", rec(N, M));
	
	return 0;
}