#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<queue>
#define inf 111111111
using namespace std;
const int maxn=105;
struct NODE{
	int w;
	double v;
}node[maxn];
int main()
{
	int cas;
	int n;
	double ans[maxn],sum;
	scanf("%d",&cas);
	for(int ca=1;ca<=cas;ca++)
	{
		scanf("%d",&n);
		for(int i=1;i<=n;i++)
		{
			scanf("%lf",&node[i].v);
			node[i].w=(int)node[i].v;
		}
		sum=0;
		int min,mini,zi;
		bool flag,fzero;
		//int ii=1;
		for(int t=1;t<=n;t++)
		{
			min=inf;
			fzero=0;
			for(int ii=1;ii<=n;ii++)
			{
				if(flag&&!fzero&&node[ii].w!=inf&&min==node[ii].w)
				{
					if(node[ii].v-node[ii].w<1e-8)
					{
						fzero=1;
						zi=ii;
					}
				}
				if(min>node[ii].w)
				{
					flag=1;
					fzero=0;
					min=node[ii].w;
					mini=ii;
					if(node[ii].v-node[ii].w<1e-8)
						flag=0,fzero=1;
				}
				//if(ii==n)	ii=1;
			}
			//if(mini==n)	ii=1;
			//else ii=mini+1;
			if(fzero)
			{
				//cout<<"0000\n";
				sum=sum+(min-1)*(n-t+1);
				for(int i=1;i<=n;i++)
					if(node[i].w!=inf)
						node[i].w-=(min-1),node[i].v-=(min-1);
				for(int i=1;i<=zi;i++)
					if(node[i].w!=inf)
						sum=sum+1,node[i].w--,node[i].v--;
				ans[zi]=sum;
				node[zi].w=inf;
				for(int i=zi+1;i<=n;i++)
				{
					if(node[i].w==inf)	continue;
					sum++;
					node[i].w--,node[i].v--;
					if(node[i].v-node[i].w<1e-8)
					{
						node[i].w=inf;
						ans[i]=sum;
					}
				}
				continue;
			}
			sum=sum+min*(n-t+1);
			/*else if(!flag)	
			{
				ans[mini]=sum;
				node[mini].w=inf;
				continue;
			}*/
			for(int i=1;i<=n;i++)
				if(node[i].w!=inf)
					node[i].w-=min,node[i].v-=min;
			for(int i=1;i<mini;i++)
			{
				if(node[i].w!=inf)
					sum=sum+1,node[i].w--,node[i].v--;
			}
			sum=sum+(node[mini].v-node[mini].w);
			ans[mini]=sum;
			node[mini].w=inf;
			for(int i=mini+1;i<=n;i++)
			{
				if(node[i].w!=inf)
					sum=sum+1,node[i].w--,node[i].v--;
			}
		}
		printf("Case %d:\n",ca);
		for(int i=1;i<=n;i++)
		{
			printf("%.2f\n",ans[i]);
		}
	}
	return 0;
}