#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;

const double PI = acos(-1);
const double EPS = 1e-10;
int sgn(double d) { return d > EPS ? 1 : d < -EPS ? -1 : 0; }
 
struct Point {
  double x, y;
  Point() {}
  Point (const double x, const double y) : x(x), y(y) {}
  Point& operator += (const Point& other) { x += other.x; y += other.y; return *this; }
  Point& operator -= (const Point& other) { x -= other.x; y -= other.y; return *this; }
  Point& operator *= (const double& factor) { x *= factor; y *= factor; return *this; }
  Point& operator /= (const double& factor) { x /= factor; y /= factor; return *this; }
};
using Vector = Point;
using Polygon = vector<Point>;
Point operator + (const Point&lhs, const Point& rhs) { return Point(lhs.x + rhs.x, lhs.y + rhs.y); }
Point operator - (const Point& lhs, const Point& rhs) { return Point(lhs.x - rhs.x, lhs.y - rhs.y); }
Point operator * (const Point& lhs, const double& factor) { return Point(lhs.x * factor, lhs.y * factor); }
Point operator * (const double& factor, const Point& rhs) { return Point(factor * rhs.x, factor * rhs.y); }
Point operator / (const Point& lhs, const double& factor) { return Point(lhs.x / factor, lhs.y / factor); }
double operator * (const Point& lhs, const Point& rhs) { return lhs.x * rhs.x + lhs.y * rhs.y; }
double operator ^ (const Point& lhs, const Point& rhs) { return lhs.x * rhs.y - lhs.y * rhs.x; }
bool operator == (const Point& lhs, const Point& rhs) { return sgn(lhs.x - rhs.x) == 0 && sgn(lhs.y - rhs.y) == 0; }
bool operator != (const Point& lhs, const Point& rhs) { return !(lhs == rhs); }
bool operator < (const Point& lhs, const Point& rhs) { return sgn(lhs.x - rhs.x) ? lhs.x < rhs.x : lhs.y < rhs.y; }
bool operator > (const Point& lhs, const Point& rhs) { return rhs < lhs; }
bool operator <= (const Point& lhs, const Point& rhs) { return !(lhs > rhs); }
bool operator >= (const Point& lhs, const Point& rhs) { return !(lhs < rhs); }
istream& operator >> (istream& is, Point& point) { return is >> point.x >> point.y; }
ostream& operator << (ostream& os, Point& point) { return os << "(" << point.x << "," << point.y << ")"; }
double norm(const Point& point) { return point.x * point.x + point.y * point.y; }
double abs(const Point& point) { return sqrt(norm(point)); }
double arg(const Point& point) { return atan2(point.y, point.x); }
Point polar(const double& a, const double& r) { return Point(cos(r) * a, sin(r) * a); }
bool sort_x(Point lhs, Point rhs) { return sgn(lhs.x - rhs.x) ? lhs.x < rhs.x : lhs.y < rhs.y; }
bool sort_y(Point lhs, Point rhs) { return sgn(lhs.y - rhs.y) ? lhs.y < rhs.y : lhs.x < rhs.x; }
 
struct Segment {
  Point p1, p2;
  Segment() {}
  Segment(const Point& p1, const Point& p2) : p1(p1), p2(p2) {}
};
using Line = Segment;
istream& operator >> (istream& is, Segment& segment) { return is >> segment.p1 >> segment.p2; }
ostream& operator << (ostream& os, Segment& segment) { return os << "(" << segment.p1 << "," << segment.p2 << ")"; }
 
static const int CCW_COUNTER_CLOCKWISE = 1;
static const int CCW_CLOCKWISE = -1;
static const int CCW_ONLINE_BACK = 2;
static const int CCW_ONLINE_FRONT = -2;
static const int CCW_ON_SEGMENT = 0;
int ccw(const Point& p0, const Point& p1, const Point& p2) {
  Vector a = p1 - p0;
  Vector b = p2 - p0;
  if (sgn(a ^ b) > 0) return CCW_COUNTER_CLOCKWISE;
  if (sgn(a ^ b) < 0) return CCW_CLOCKWISE;
  if (sgn(a * b) < 0) return CCW_ONLINE_BACK;
  if (sgn(norm(a) - norm(b)) < 0) return CCW_ONLINE_FRONT;
  return CCW_ON_SEGMENT;
}
 
bool intersectSS(const Point& p1, const Point& p2, const Point& p3, const Point& p4) {
  return ccw(p1, p2, p3) * ccw(p1, p2, p4) <= 0 && ccw(p3, p4, p1) * ccw(p3, p4, p2) <= 0;
}
bool intersectSS(const Segment& s1, const Segment& s2) {
  return intersectSS(s1.p1, s1.p2, s2.p1, s2.p2);
}

Point getCrossPointSS(const Segment& s1, const Segment& s2) {
  Vector base = s2.p2 - s2.p1;
  double d1 = abs(base ^ (s1.p1 - s2.p1));
  double d2 = abs(base ^ (s1.p2 - s2.p1));
  double t = d1 / (d1 + d2);
  return s1.p1 + (s1.p2 - s1.p1) * t;
}

int main() {
  cin.tie(0);
  ios_base::sync_with_stdio(false);
  cout << fixed << setprecision(10);
  
  Segment l[3];
  while (cin >> l[0] >> l[1] >> l[2]) {
    bool no = false;
    for (int i = 0; i < 3; i++) {
      if (ccw(l[i].p1, l[i].p2, l[(i + 1) % 3].p1) == CCW_ON_SEGMENT) no = true;
      if (ccw(l[i].p1, l[i].p2, l[(i + 1) % 3].p2) == CCW_ON_SEGMENT) no = true;
    }
    for (int i = 0; i < 3; i++) {
      if (!intersectSS(l[i], l[(i + 1) % 3])) no = true;
    }
    if (no) {
      cout << "kyo" << endl;
      continue;
    }
    Point cp[3];
    for (int i = 0; i < 3; i++) {
      cp[i] = getCrossPointSS(l[i], l[(i + 1) % 3]);
    }
    if (cp[0] == cp[1] && cp[1] == cp[2]) {
      cout << "kyo" << endl;
      continue;
    }
    double S = abs((cp[1] - cp[0]) ^ (cp[2] - cp[0])) / 2;
    if (sgn(S - 1900000) >= 0) cout << "dai-kichi" << endl;
    else if (sgn(S - 1000000) >= 0) cout << "chu-kichi" << endl;
    else if (sgn(S - 100000) >= 0) cout << "kichi" << endl;
    else cout << "syo-kichi" << endl;
  }

  return 0;
}
