Code: Select all
#include<iostream>
#include<sstream>
#include<string>
#include<cstdlib>
#include<vector>
#include<map>
#include<queue>
#include<stack>
#include<cmath>
#include<cctype>
#include<set>
#include<bitset>
#include<algorithm>
#include<list>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<ctype.h>
using namespace std;
//#define print1(a) cout<<a<<endl
//#define print2(a,b) cout<<a<<" "<<b<<endl
//#define print3(a,b,c) cout<<a<<" "<<b<<" "<<c<<endl
//#define oo (1<<30)
#define PI 3.141592653589793
#define pi 2*acos(0)
//#define ERR 1e-5
//#define PRE 1e-8
#define SZ(a) (int)a.size()
#define LL long long
#define ISS istringstream
#define OSS ostringstream
#define VS vector<string>
#define VI vector<int>
#define VD vector<double>
#define VLL vector<long long>
#define SII set<int>::iterator
#define SI set<int>
#define mem(a,b) memset(a,b,sizeof(a))
#define fr(i,a,b) for(i=a;i<=b;i++)
#define frn(i,a,b) for(i=a;i>=b;i--)
//#define fri(a,b) for(i=a;i<=b;i++)
//#define frin(a,b) for(i=a;i>=b;i--)
//#define frj(a,b) for(j=a;j<=b;j++)
//#define frjn(a,b) for(j=a;j>=b;j--)
//#define frk(a,b) for(k=a;k<=b;k++)
//#define frkn(a,b) for(k=a;k>=b;k--)
//#define frl(a,b) for(l=a;l<=b;l++)
//#define frln(a,b) for(l=a;l>=b;l--)
#define EQ(a,b) (fabs(a-b)<ERR)
#define all(a,b,c) for(int I=0;I<b;I++) a[I] = c
#define CROSS(a,b,c,d) ((b.x-a.x)*(d.y-c.y)-(d.x-c.x)*(b.y-a.y))
#define sqr(a) ((a)*(a))
#define FORE(i,a) for(typeof((a).begin())i=(a).begin();i!=(a).end();i++)
//#define BE(a) a.begin(),a.end()
//#define rev(a) reverse(BE(a));
//#define sorta(a) sort(BE(a))
#define pb push_back
#define popb pop_back
#define round(i,a) i = ( a < 0 ) ? a - 0.5 : a + 0.5;
#define makeint(n,s) istringstream(s)>>n
#define countbit(mask) __builtin_popcount(musk)
#define mod 10^9+7
int main()
{
LL tCase,nCase;
scanf("%lld",&tCase);
fr(nCase,1,tCase)
{
int co_ordinate[5][3];
mem(co_ordinate,0);
scanf("%d %d",&co_ordinate[1][1],&co_ordinate[1][2]);
scanf("%d %d",&co_ordinate[2][1],&co_ordinate[2][2]);
scanf("%d %d",&co_ordinate[3][1],&co_ordinate[3][2]);
scanf("%d %d",&co_ordinate[4][1],&co_ordinate[4][2]);
int final_pos[5][3];
mem(final_pos,0);
int taken[5];
mem(taken,0);
int last_pos=1;
int k,i,j;
fr(i,1,4)
{
fr(k,1,4)
{
//printf("taken[%d]=%d\n",k,taken[k]);
if(taken[k]==0)
{
last_pos=k;
//taken[k]=1;
final_pos[i][1]=co_ordinate[k][1];
final_pos[i][2]=co_ordinate[k][2];
k+=5;
}
}
//printf("\nfinal_pos[%d][1]=%d and final_pos[%d][2]=%d\n",i,final_pos[i][1],i,final_pos[i][2]);
fr(j,1,4)
{
if(final_pos[i][1]>co_ordinate[j][1] && taken[j]==0)
{
//printf("%d ",j);
last_pos=j;
final_pos[i][1]=co_ordinate[j][1];
final_pos[i][2]=co_ordinate[j][2];
//printf("%d.(%d %d)\n",i,final_pos[i][1],final_pos[i][2]);
}
//else if(final_pos[i][1]==co_ordinate[j][1] && taken[j]==0)
//{
// last_pos=j;
// final_pos[i][1]=co_ordinate[j][1];
// final_pos[i][2]=co_ordinate[j][2];
//?}
}
/*printf("last_pos=%d\n",last_pos);
printf("final_pos[%d][1]=%d and final_pos[%d][2]=%d\n",i,final_pos[i][1],i,final_pos[i][2]);*/
taken[last_pos]=1;
last_pos=0;
}
/*fr(i,1,4)
{
printf("%d.(%d %d)\n",i,final_pos[i][1],final_pos[i][2]);
}
printf("\n");*/
if(final_pos[1][2]>final_pos[2][2])
{
//swap
swap(final_pos[1][2],final_pos[2][2]);
swap(final_pos[1][1],final_pos[2][1]);
}
if(final_pos[3][2]>final_pos[4][2])
{
swap(final_pos[3][2],final_pos[4][2]);
swap(final_pos[3][1],final_pos[4][1]);
}
/*fr(i,1,4)
{
printf("%d.(%d %d)\n",i,final_pos[i][1],final_pos[i][2]);
}*/
int dx1=abs(final_pos[1][1]-final_pos[3][1]);
int dx2=abs(final_pos[2][1]-final_pos[4][1]);
int dy1=abs(final_pos[1][2]-final_pos[2][2]);
int dy2=abs(final_pos[3][2]-final_pos[4][2]);
if(dx1==dx2 && dy1==dy2 && dx1==dy1)
{
//square or rhombus
if(final_pos[1][1]==final_pos[2][1]&&final_pos[1][2]==final_pos[3][2])
{
//square
printf("Case %lld: Square",nCase);
}
else
{
//rhombus
printf("Case %lld: Rhombus",nCase);
}
}
else if(dx1==dx2 && dy1==dy2 && dx1!=dy1)
{
//rectangle or parallelogram
if(final_pos[1][1]==final_pos[2][1]&&final_pos[1][2]==final_pos[3][2])
{
//rectangle
printf("Case %lld: Rectangle",nCase);
}
else
{
//parallelogram
printf("Case %lld: Parallelogram",nCase);
}
}
else if((dy1==dy2 && dx1!=dx2)||(dy1!=dy2 && dx1==dx2))
{
//trapezium
printf("Case %lld: Trapezium",nCase);
}
else
{
//normal
printf("Case %lld: Ordinary Quadrilateral",nCase);
}
if(nCase!=tCase)
{
printf("\n");
}
}
return 0;
}