#include using namespace std; const int N=1e5+5; void FileIO(){ freopen("turnback.in","r",stdin); freopen("turnback.out","w",stdout); } namespace sunburstfan{ #define int long long int n,m; vector c; vector > > f; vector > > vis; const int MAXTIME=1000; int get(int pos,int step){ int next=pos+step; if(next>=n-1)next=2*(n-1)-next; return next; } double dfs(int time,int pos,int used_magic){ if(pos==n-1||time>=MAXTIME)return 0.0; if(vis[time][pos][used_magic])return f[time][pos][used_magic]; vis[time][pos][used_magic]=true; double res=1e18; double tmp=0.0; double P=1.0/m; for(int i=1;i<=m;i++){ int next=get(pos,i); double cost=P*(c[next]+dfs(time+1,next,used_magic)); tmp+=cost; } res=min(res,tmp); if(used_magic==0){ for(int i=1;i<=m;i++){ int next=get(pos,i); double cost=c[next]+dfs(time+1,next,1); res=min(res,cost); } } return f[time][pos][used_magic]=res; } void solve(){ cin>>n>>m; c.resize(n); for(int i=1;i<=n-2;i++){ cin>>c[i]; } f.assign(MAXTIME+1,vector >(n,vector(2,-1.0))); vis.assign(MAXTIME+1,vector >(n,vector(2,false))); double ans=dfs(0,0,0); cout<