import sys input = sys.stdin.readline n,m=list(map(int,input().split())) C=[0]+list(map(int,input().split()))+[0] A=[[0]*(n) for i in range(n)] for i in range(n-1): now=i plus=1 for j in range(m): if now==n-1: plus=-1 now+=plus A[now][i]-=1/m for i in range(n): A[i][i]+=1 #for a in A: # print(*a) # 行列の計算(numpyを使えないとき) def prod(A,B,k,l,m):# A:k*l,B:l*m C=[[None for i in range(m)] for j in range(k)] for i in range(k): for j in range(m): ANS=0 for pl in range(l): ANS=(ANS+A[i][pl]*B[pl][j]) C[i][j]=ANS return C def plus(A,B,k,l):# a,B:k*l C=[[None for i in range(l)] for j in range(k)] for i in range(k): for j in range(l): C[i][j]=(A[i][j]+B[i][j]) return C # 逆行列を掃き出し法で計算(floatで計算) # ※どこがバグってそう! def inv_transformation(A,x): # xは正方行列の行数 for i in range(x): A[i]+=[0]*x A[i][i+x]=1 for i in range(x): for j in range(x): if i==j: continue base=A[i][i] if base!=1: for k in range(x*2): A[i][k]/=base target=A[j][i] if target==0: continue for k in range(x*2): A[j][k]-=A[i][k]*target B=[[0]*x for i in range(x)] for i in range(x): for j in range(x): B[i][j]=A[i][j+x] return B B=inv_transformation(A,n) X=prod([C],B,1,n,n) #print(X) ANS=[1<<63]*n for i in range(n-1,-1,-1): if i+m>=n-1: ANS[i]=C[i] else: for j in range(1,m+1): ANS[i]=min(ANS[i],C[i]+X[0][i+j]) score=C[i] for j in range(1,m+1): score+=ANS[i+j]/m ANS[i]=min(ANS[i],score) print(ANS[0])