#include <bits/stdc++.h>
using namespace std;
const int dx[]={0,1,0,-1,1,-1,-1,1};
const int dy[]={-1,0,1,0,1,1,-1,-1};
const int INF = 1<<30;
const double EPS = 1e-15;
#define PB push_back
#define mk make_pair
#define fi first
#define se second
#define ll long long
#define reps(i,j,k) for(int i = (j); i < (k); i++)
#define rep(i,j) reps(i,0,j)
#define MOD 1000000007
typedef pair<int,int> Pii;
typedef pair<int,Pii> P;
typedef vector<int> vi;
typedef vector<vi> vvi;
struct Point{
    double x,y;
    Point(){}
    Point(double _x,double _y){
        x = _x;
        y = _y;
    }
    Point operator + (Point p){
        return Point(x+p.x,y+p.y);
    }
  
    Point operator - (Point p){
        return Point(x-p.x,y-p.y);
    }
  
    Point operator * (double k){
        return Point(k*x,k*y);
    }
  
    Point operator / (double k){
        return Point(x/k,y/k);
    }
 
    bool operator<(const Point &p)const{
        return x!=p.x?x<p.x:y<p.y;
    }
  
};
double dot(Point p, Point q){
    return p.x*q.x+p.y*q.y;
}
  
double cross(Point p,Point q){
    return p.x*q.y-q.x*p.y;
}
  
double norm(Point p){
    return p.x*p.x+p.y*p.y;
}
  
double pabs(Point p){
    return sqrt(norm(p));
}
typedef vector<Point> Polygon;
struct Line : Polygon{
    Line(){}
    Line(Point p,Point q){
        PB(p);
        PB(q);  
    }
};
struct Circle{
    Point p; //中心点
    double r; //半径
    Circle(){}
    Circle(Point _p,double _r){
        p = _p;
        r = _r;
    }
};
int ccw(Point a,Point b,Point c){
    b = b-a;
    c = c-a;
    if(cross(b,c) > 0)return +1; //a→b で反時計に折れてc ccw
    if(cross(b,c) < 0)return -1; //a→b で時計に折れてc ccw
    if(dot(b,c) < 0)return +2; // c--a--b;
    if(pabs(b)<pabs(c))return -2; //a--b--c
    return 0; //a--c--b
}
bool intersectSS(Line l,Line m){
    //lとmが交差してるかどうか
    return (ccw(l[0],l[1],m[0])*ccw(l[0],l[1],m[1])<=0)&&
            (ccw(m[0],m[1],l[0])*ccw(m[0],m[1],l[1])<=0);
}

bool intersectLL(Line l,Line m){
	return fabs(cross(l[1]-l[0],m[1]-m[0])) > EPS || //平行でない
			fabs(cross(l[1]-l[0],m[0]-l[0])) < EPS; //同一の線
}


double TriangleArea(Point a,Point b,Point c){
    b = b - a;
    c = c - a;
    return cross(b,c)*0.5;
}
 
double VertexArea(Polygon v){
    double subArea = 0.0;
    rep(i,v.size()-1){
        subArea += TriangleArea(v[0],v[i],v[i+1]);
    }
    return subArea;
}
 


Point crosspoint(Line l,Line m){
    if(intersectSS(l,m) == false)return Point(INF,INF);
    return m[0]+(m[1]-m[0])*cross(l[1]-l[0],l[1]-m[0])/cross(l[1]-l[0],m[1]-m[0]);
}
 
int main(){
	while(true){
        bool endflg = false;
        Line l[3];
        rep(i,3){
            double x1,y1,x2,y2;
            scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
            if(i == 0){
                if(x1 == 0.0 && y1 == 0.0 && x2 == 0.0 && y2 == 0.0){
                    endflg = true;
                    break;
                }
            }
            l[i].PB(Point(x1,y1));
            l[i].PB(Point(x2,y2));
        }
        if(endflg)break;
        Point p[3];
        p[0] = crosspoint(l[0],l[1]);
        p[1] = crosspoint(l[0],l[2]);
        p[2] = crosspoint(l[1],l[2]);
        if(!(intersectSS(l[0],l[1])&&intersectSS(l[0],l[2])&&intersectSS(l[1],l[2]))){
        	puts("kyo");
        	continue;
        }
        double area = fabs(TriangleArea(p[0],p[1],p[2]));
        if(area-1900000>EPS)puts("dai-kichi");
        else if(area-1000000>EPS)puts("chu-kichi");
        else if(area-100000>EPS)puts("kichi");
        else if(area>EPS)puts("syo-kichi");
        else puts("kyo");
        //printf("%.10lf\n",area);
    }
    return 0;
}

Measured memory_bytes: 1200