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<algorithm>
#include<iostream>
#include<vector>
using namespace std;
typedef long long lint;
typedef vector<int>vi;
typedef pair<int,int>pii;
#define rep(i,n)for(int i=0;i<(int)(n);++i)

const int N=510;
const double INF=1e17;
double dp[N][N];

int main(){
  int n,m;
  cin>>n>>m;
  vi a(n);
  rep(i,n)cin>>a[i];
  vector<double>acc(n+1);
  rep(i,n)acc[i+1]=acc[i]+a[i];
  rep(i,N)rep(j,N)dp[i][j]=-INF;
  dp[0][0]=0;
  rep(i,n+1){
    if(i==0)continue;
    rep(j,i+1){
      rep(k,i+1){
	if(j>=1){
	  dp[i][j]=max(dp[i][j],dp[i-k][j-1]+(acc[i]-acc[i-k])/k);
	}
      }
    }
  }
  double ma=-INF;
  rep(i,m+1)ma=max(ma,dp[n][i]);
  printf("%.14f\n",ma);
}