#include <bits/stdc++.h>
int minx, miny, minz, maxx, maxy, maxz, n, m, Q, x, y, z, mx1, mn1, mx2, mn2,
    mx3, mn3, D, cnt;
using namespace std;
struct node {
  int l, r, maxx, maxy, maxz, minx, miny, minz, d[3];
} t[2000005];
inline bool cmp(node aa, node bb) {
  if (aa.d[D] == bb.d[D]) {
    if (aa.d[(D + 1) % 3] == bb.d[(D + 1) % 3])
      return aa.d[(D + 2) % 3] < bb.d[(D + 2) % 3];
    return aa.d[(D + 1) % 3] < bb.d[(D + 1) % 3];
  }
  return aa.d[D] < bb.d[D];
}
inline void update(int x, int y) {
  t[x].maxx = max(t[x].maxx, t[y].maxx);
  t[x].minx = min(t[x].minx, t[y].minx);
  t[x].maxy = max(t[x].maxy, t[y].maxy);
  t[x].miny = min(t[x].miny, t[y].miny);
  t[x].maxz = max(t[x].maxz, t[y].maxz);
  t[x].minz = min(t[x].minz, t[y].minz);
}
int build(int l, int r, int d) {
  int mid = (l + r) >> 1;
  D = d;
  nth_element(t + l, t + mid, t + r + 1, cmp);
  t[mid].minx = t[mid].maxx = t[mid].d[0];
  t[mid].miny = t[mid].maxy = t[mid].d[1];
  t[mid].minz = t[mid].maxz = t[mid].d[2];
  if (l < mid) t[mid].l = build(l, mid - 1, (d + 1) % 3), update(mid, t[mid].l);
  ;
  if (r > mid) t[mid].r = build(mid + 1, r, (d + 1) % 3), update(mid, t[mid].r);
  ;
  return mid;
}
bool inc(int l1, int r1, int l2, int r2) {
  if (l1 > r2 || l2 > r1)
    return 0;
  else
    return 1;
}
bool in(int d) {
  if (!inc(t[d].minx, t[d].maxx, mn1, mx1)) return 0;
  if (!inc(t[d].miny, t[d].maxy, mn2, mx2)) return 0;
  if (!inc(t[d].minz, t[d].maxz, mn3, mx3)) return 0;
  return 0 ^ 1;
}
bool check(int l1, int r1, int l2, int r2) { return l2 <= l1 && r2 >= r1; }
bool check(int d) {
  if (!check(t[d].minx, t[d].maxx, mn1, mx1)) return 0;
  if (!check(t[d].miny, t[d].maxy, mn2, mx2)) return 0;
  if (!check(t[d].minz, t[d].maxz, mn3, mx3)) return 0;
  return 1;
}
int query(int k) {
  if (!k) return 0;
  if (!in(k)) return 0;
  if (check(k)) return 0 ^ 1;
  if (t[k].d[0] >= mn1 && t[k].d[0] <= mx1 && t[k].d[1] >= mn2 &&
      t[k].d[1] <= mx2 && t[k].d[2] >= mn3 && t[k].d[2] <= mx3)
    return 0 ^ 1;
  if (query(t[k].l)) return 1;
  if (query(t[k].r)) return 1;
  return 0;
}
inline int read() {
  char ch = getchar();
  int f = 1, w = 0;
  for (; ch < '0' || ch > '9'; ch = getchar())
    if (ch == '-') f = -1;
  for (; ch >= '0' && ch <= '9'; ch = getchar()) w = w * 10 + ch - '0';
  return w * f;
}
int main() {
  minx = read();
  miny = read();
  minz = read();
  n = read();
  m = read();
  Q = read();
  maxx = maxy = maxz = 1;
  for (int i = 1; i <= n; i++) {
    x = read();
    y = read();
    z = read();
    minx = min(minx, x);
    maxx = max(maxx, x);
    miny = min(miny, y);
    maxy = max(maxy, y);
    minz = min(minz, z);
    maxz = max(maxz, z);
  }
  for (int i = 1; i <= m; i++) {
    x = read();
    y = read();
    z = read();
    if (x >= minx && x <= maxx && y >= miny && y <= maxy && z <= maxz &&
        z >= minz)
      return puts("INCORRECT"), 0;
    t[++cnt].d[0] = x;
    t[cnt].d[1] = y;
    t[cnt].d[2] = z;
  }
  puts("CORRECT");
  int rt = build(1, cnt, 1);
  while (Q--) {
    x = read();
    y = read();
    z = read();
    if (minx <= x && x <= maxx && miny <= y && y <= maxy && minz <= z &&
        z <= maxz) {
      puts("OPEN");
      continue;
    }
    mx1 = max(x, maxx);
    mn1 = min(x, minx);
    mx2 = max(y, maxy);
    mn2 = min(y, miny);
    mx3 = max(z, maxz);
    mn3 = min(z, minz);
    if (query(rt))
      puts("CLOSED");
    else
      puts("UNKNOWN");
  }
  return 0;
}
