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 <bits/stdc++.h>
using namespace std;
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define rep(i,n)   FOR(i,0,n)
#define pb emplace_back
typedef long long ll;
typedef pair<ll,ll> pint;

double a[501],sum[501];
double dp[501][501];
int main(){
    int n,m;
    cin>>n>>m;
    rep(i,n) cin>>a[i];
    rep(i,n) sum[i+1]+=a[i]+sum[i];
    rep(i,n)rep(j,n)dp[i][j]=-1000100010;
    dp[0][0]=0;
    rep(i,n)rep(j,m)if(dp[i][j]>=0){
        FOR(k,i,n){
            dp[k+1][j+1]=max(dp[k+1][j+1],dp[i][j]+(sum[k+1]-sum[i])/(k-i+1));
        }
    }
    double mx=0.0;
    FOR(i,1,m+1) mx=max(mx,dp[n][i]);
    cout<<fixed<<setprecision(12)<<mx<<endl;
    return 0;
}