#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <vector>
#include <utility>
#include <functional>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <deque>
#include <ctime>
#include <complex>
#include <cassert>
  
using namespace std;
  
#define rep(i,n) REP(i,0,n)
#define REP(i,s,e) for(int i=(s); i<(int)(e); i++)
#define pb push_back
#define mp make_pair
#define all(r) (r).begin(),(r).end()
#define rall(r) (r).rbegin(),(r).rend()
#define fi first
#define se second
#define println(X) cout<<X<<endl;
#define DBG(X) cout<<#X<<" : "<<X<<endl;
  
typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vii;
typedef vector<ll> vl;
typedef vector<vl> vll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
 
const double EPS = 1e-8;
const double INF = 1e12;
typedef complex<double> P;
namespace std {
  bool operator < (const P& a, const P& b) {
    return real(a) != real(b) ? real(a) < real(b) : imag(a) < imag(b);
  }
}
double cross(const P& a, const P& b) {
  return imag(conj(a)*b);
}
double dot(const P& a, const P& b) {
  return real(conj(a)*b);
}

struct L : public vector<P> {
  L(const P &a, const P &b) {
    push_back(a); push_back(b);
  }
};

int ccw(P a, P b, P c) {
  b -= a; c -= a;
  if (cross(b, c) > 0)   return +1;       // counter clockwise
  if (cross(b, c) < 0)   return -1;       // clockwise
  if (dot(b, c) < 0)     return +2;       // c--a--b on line
  if (norm(b) < norm(c)) return -2;       // a--b--c on line
  return 0;
}

bool isParallel(const L &l, const L &m) {
  return abs(cross(l[1]-l[0], m[1]-m[0])) < EPS;
}

bool intersectSS(const L &s, const L &t) {
  return ccw(s[0],s[1],t[0])*ccw(s[0],s[1],t[1]) <= 0 &&
         ccw(t[0],t[1],s[0])*ccw(t[0],t[1],s[1]) <= 0;
}

P crosspoint(const L &l, const L &m) {
  double A = cross(l[1] - l[0], m[1] - m[0]);
  double B = cross(l[1] - l[0], l[1] - m[0]);
  if (abs(A) < EPS && abs(B) < EPS) return m[0]; // same line
  if (abs(A) < EPS) assert(false); // !!!PRECONDITION NOT SATISFIED!!!
  return m[0] + B / A * (m[1] - m[0]);
}

int main(){
	int x[2], y[2];
	while(cin>>x[0]>>y[0]>>x[1]>>y[1]){
		if(x[0] == 0 && y[0] == 0 && x[1] == 0 && y[1] == 0) break;
		vector<L> l;
		l.pb({P(x[0], y[0]), P(x[1], y[1])});
		rep(i, 2){
			rep(j, 2) cin>>x[j]>>y[j];
			l.pb({P(x[0], y[0]), P(x[1], y[1])});
		}
		bool f = true;
		vector<P> p;
		rep(i, 3) rep(j, i){
			if(isParallel(l[i], l[j]) || (!intersectSS(l[i], l[j]))){
				f = false;
				break;
			}
			p.pb(crosspoint(l[i], l[j]));
		}
		if(f == false){
			cout<<"kyo"<<endl;
			continue;
		}
		double s = cross(p[1]-p[0], p[2]-p[0]);
		//rep(i, 3) cout<<" "<<real(p[i])<<" "<<imag(p[i])<<endl;
		s = abs(s);
		s /= 2.0;
		//cout<<" "<<s<<endl;
		string ans;
		if(s + EPS >		1900000.0) ans = "dai-kichi";
		else if(s + EPS >	1000000.0) ans = "chu-kichi";
		else if( s + EPS >	100000.0) ans = "kichi";
		else if( s < EPS) ans = "kyo";
		else ans = "syo-kichi";
		cout<<ans<<endl;
	}
}