#include <cstdio>
#include <complex>

using namespace std;

const double EPS=1e-9;

typedef complex<double> Point;
struct Line{
	Point pos,dir;
	Line(){}
	Line(Point p,Point d):pos(p),dir(d){}
};
typedef Line Segment;

int Signum(double x)
{
	return abs(x)<EPS?0:x<0?-1:1;
}
double Dot(Point a,Point b)
{
	return real(conj(a)*b);
}
double Cross(Point a,Point b)
{
	return imag(conj(a)*b);
}
double CCW(Point a,Point b,Point c)
{
	Point d1=b-a,d2=c-a;
	double sign=Signum(Cross(d1,d2));
	if(sign)
		return sign;
	if(Dot(d1,d2)<-EPS)
		return -2;
	if(norm(d1)<norm(d2)-EPS)
		return 2;
	return 0;
}

// 直線と線分が重なるとき，線分の端点が直線上にあるときもtrue
bool IntersectLS(Line a,Segment b)
{
	return CCW(a.pos,a.pos+a.dir,b.pos)*CCW(a.pos,a.pos+a.dir,b.pos+b.dir)<=0;
}
bool IntersectSS(Segment a,Segment b)
{
	return IntersectLS(a,b) && IntersectLS(b,a);
}

// aとbが平行でないことが前提
Point IntersectPoint(Line a,Line b)
{
	return a.pos+a.dir*Cross(b.pos-a.pos,b.dir)/Cross(a.dir,b.dir);
}

const char* solve(Line* ls)
{
	Point ps[3];
	for(int i=0;i<3;i++){
		Line l1=ls[i],l2=ls[(i+1)%3];
		if(Signum(Cross(l1.dir,l2.dir))==0)
			return "kyo";
		if(!IntersectSS(l1,l2))
			return "kyo";
		ps[i]=IntersectPoint(l1,l2);
	}
	
	double area=abs(Cross(ps[1]-ps[0],ps[2]-ps[0]));
	if(area<1.0e5-EPS)
		return "syo-kichi";
	if(area<1.0e6-EPS)
		return "kichi";
	if(area<1.9e5-EPS)
		return "chu-kichi";
	return "dai-kichi";
}

int main()
{
	for(;;){
		Line ls[3];
		for(int i=0;i<3;i++){
			int x1,y1,x2,y2; scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
			ls[i]=Line(Point(x1,y1),Point(x2-x1,y2-y1));
		}
		if(feof(stdin))
			break;
		puts(solve(ls));
	}
	
	return 0;
}