#include "string"
#include "iostream"
#include "cstdio"
#include "cmath"
#include "set"
#include "queue"
#include "vector"
#include "cctype"
#include "sstream"
#include "cstdlib"
#include "cstring"
#include "stack"
#include "ctime"
#include "algorithm"
#define pa pair<int,int>
#define Pi M_PI
#define INF 0x3f3f3f3f
#define INFL 0x3f3f3f3f3f3f3f3fLL
using namespace std;
typedef long long LL;
const int M=15;
LL x[M],y[M],z[M];
LL dist(int i,int j)
{
return (x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])+(z[i]-z[j])*(z[i]-z[j]);
}
struct node
{
LL d;
int id;
}dis[100];
int cmp(node a,node b)
{
return a.d<b.d;
}
int main()
{
int t,cas=0;
scanf("%d",&t);
while(t--)
{
for(int i=1;i<=4;i++)
{
cin>>x[i]>>y[i]>>z[i];
}
int h=0;
for(int i=1;i<4;i++)
{
for(int j=i+1;j<=4;j++)
{
dis[++h].d=dist(i,j);
}
}
sort(dis+1,dis+1+h,cmp);
int flag=0;
for(int i=2;i<=4;i++)
{
if(dis[i].d!=dis[i-1].d)
flag=1;
}
if(dis[5].d!=dis[4].d*2 || dis[6].d!=dis[5].d)
flag=1;
if(flag)
printf("Case #%d: No\n",++cas);
else
printf("Case #%d: Yes\n",++cas);
}
return 0;
}
,,判断条件为四个点相减,除了对角的点不同其他的都相等