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>
#define REP(i, a, n) for(ll i = ((ll) a); i < ((ll) n); i++)
using namespace std;
typedef long long ll;

int main(void) {
  ll N, M;
  cin >> N >> M;
  vector<ll> A(N);
  REP(i, 0, N) cin >> A[i];

  vector< vector<double> > dp(N + 1, vector<double>(N, -1e20));
  dp[0][0] = 0;
  REP(i, 0, N) REP(j, 0, i + 1) {
    ll sum = 0;
    REP(k, 0, N) if(i - k >= 0 && j - k >= 0) {
      sum += A[i - k];
      dp[i + 1][j] = max(dp[i + 1][j], dp[i - k][j - k] + (double) sum / (k + 1));
    }
  }

  double ans = 0;
  REP(i, N - M, N) ans = max(ans, dp[N][i]);
  printf("%.15lf\n", ans);
}