

#include<iostream>
#include<cstdio>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std;
long long a[100005];
long long n,m;
void input()
{
for(int i=0;i<n;i++)
{
int t;
scanf("%d",&t);
a[i]=t;
}
}
double binary(double L,double R)
{
if(R-L<0.001) return L;
double M=(L+R)/2;
long long sum=0;
for(int i=0;i<n;i++)
sum+=(long long)a[i]/M;
if(sum>=m)
return binary(M,R);
else
return binary(L,M);
}
int main(){
cin>>n>>m;
input();
double sum=0;
for(int i=0;i<n;i++)
sum+=a[i];
double ans=binary(1e-5,sum/m);
printf("%.2f\n",ans);
return 0;
}


#include<iostream>
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
int a[100005],n;
int du[100005],ans[100005];
vector<int> G[100005];
void init()
{
for(int i=0;i<n;i++)
{
du[i]=0;
ans[i]=0;
G[i].clear();
}
}
void input()
{
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
for(int i=0;i<n;i++)
{
for(int j=-1;j<=1;j+=2)
{
int v=(i+j+n)%n;
if(a[i]>a[v])
{
du[i]++;
G[v].push_back(i);
}
}
}
}
void tuopu(){
queue<int>q;
for(int i=0;i<n;i++)
if(du[i]==0)
q.push(i);
while(!q.empty())
{
int t=q.front();
q.pop();
for(int i=0;i<G[t].size();i++)
{
int v=G[t][i];
du[v]--;
ans[v]=max(ans[v],ans[t]+1);
if(du[v]==0)
{
q.push(v);
}
}
}
}
int main(){
int T;
cin>>T;
while(T--)
{
cin>>n;
init();
input();
tuopu();
long long sum=0;
for(int i=0;i<n;i++) sum+=ans[i]+1;
cout<<sum<<endl;
}
return 0;
}

