#include <string>
#include <algorithm>
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
using namespace std;
const double eps=1e-8,INF=1e15;
/*
 s=0 t=n+1
 逆序对点 双向边 1
 向汇点 k-0.5d+n
 源点 n
*/
const int MXV=110,MXE=MXV*MXV+MXV*2;
struct elist
{
	int v,last;
	double f;
}e[MXE+MXE];
int zh[MXV],tote,cur[MXV];
void adde(int u,int v,double c)
{
	//cout<<u<<" "<<v<<" "<<c<<endl;
	e[tote].v=v;e[tote].f=c;
	e[tote].last=zh[u];
	zh[u]=tote++;
	e[tote].v=u;e[tote].f=0;
	e[tote].last=zh[v];
	zh[v]=tote++;
}
int dis[MXV],head,rear,q[MXV];
bool bfs(int S,int T)
{
	head=rear=0;
	memset(dis,-1,sizeof(dis));
	q[rear++]=S;dis[S]=0;
	while (head<rear)
	{
		int u=q[head++];cur[u]=zh[u];
		for (int i=zh[u];i!=-1;i=e[i].last)
		{
			int v=e[i].v;
			if (e[i].f>eps&&dis[v]<0)
			{
				q[rear++]=v;
				dis[v]=dis[u]+1;
			}
		}
	}
	return dis[T]!=-1;
}
double dfs(int u,double delta,int T)
{
	if (u==T)
		return delta;
	double ret=0;
	int i;
	for (i=cur[u];i!=-1&&delta>eps;i=e[i].last)
	{
		int v=e[i].v;
		if (dis[v]==dis[u]+1&&e[i].f>eps)
		{
			double flow=dfs(v,min(delta,e[i].f),T);
			e[i].f-=flow;
			e[i^1].f+=flow;
			delta-=flow;
			ret+=flow;
		}
		if (delta>eps)
			cur[u]=e[i].last;
	}
	return ret;
}
double maxflow(int S,int T)
{
	double ret=0;
	while (bfs(S,T))
	{
		ret+=dfs(S,INF+INF,T);
	}
	return ret;
}
int lst[MXV],d[MXV],n;
bool check(double mid)
{
	//cout<<mid<<endl;
	memset(d,0,sizeof(d));memset(zh,-1,sizeof(zh));tote=0;
	int S=0,T=n+1;
	for (int i=1;i<=n;i++)  for (int j=i+1;j<=n;j++)  if (lst[j]<lst[i])
	{
		adde(i,j,1);
		adde(j,i,1);
		d[i]++;d[j]++;
	}
	for (int i=1;i<=n;i++)
	{
		adde(S,i,n);
		adde(i,T,mid+mid-d[i]+n);
	}
	//cout<<"==============================="<<endl;
	return (maxflow(S,T)-n*n)<-eps;
}
int main ()
{
	int _,casenum=1;
	scanf("%d",&_);
	while (_--)
	{
		scanf("%d",&n);
		for (int i=1;i<=n;i++)  scanf("%d",&lst[i]);
		double l=0,r=n,mid;
		while (l<r-1e-7)
		{
			mid=(l+r)/2;
			if (check(mid))  l=mid;
			else  r=mid;
		}
		printf("Case #%d: %.7f\n",casenum++,l);
	}
	return 0;
}
