
#include<bits/stdc++.h>
using namespace std;
int T,n,a[2010],tot,ans,noww;
struct NODE
{
int sum,x,y;
}b[2000010];
bool cmp(NODE x,NODE y)
{
return x.sum<y.sum;
}
int main()
{
scanf("%d",&T);
while(T--)
{
noww++;
scanf("%d",&n);
tot=0,ans=0;
for(int i=1;i<=n*n-((n*(n-1))/2)+10;i++)
b[i].sum=0,b[i].x=0,b[i].y=0;
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
b[++tot].sum=a[i]+a[j];
b[tot].x=a[i];
b[tot].y=a[j];
}
}
sort(a+1,a+1+tot,cmp);
for(int i=1;i<=n;i++)
{
int j=upper_bound(b+1,b+1+tot,a[i],cmp)-b-1;
for(j;j<=tot;j++)
{
if(a[i]==b[j].x||a[i]==b[j].y) continue;
if(a[i]+b[j].x>b[j].y&&a[i]+b[j].y>b[j].x) ans++;
}
}
printf("Case %d: %d\n",noww,ans);
}
return 0;
}
/*
给定一些木棍的长度,求有多少种三支木棍的组合可以组成三角形
n<=2000
*/
这个代码会报错,可是蒟蒻不知道怎么改才能不报错
