#include <bits/stdc++.h>
using namespace std;
template <class T, size_t N>
ostream& operator<<(ostream& os, const array<T, N>& v);
template <class T1, class T2>
ostream& operator<<(ostream& os, const pair<T1, T2>& p) {
  return os << "(" << p.first << ", " << p.second << ")";
}
template <class T>
ostream& operator<<(ostream& os, const vector<T>& v) {
  bool f = 1;
  os << "[";
  for (auto& i : v) {
    if (!f) os << ", ";
    os << i;
    f = 0;
  }
  return os << "]";
}
template <class T, size_t N>
ostream& operator<<(ostream& os, const array<T, N>& v) {
  bool f = 1;
  os << "[";
  for (auto& i : v) {
    if (!f) os << ", ";
    os << i;
    f = 0;
  }
  return os << "]";
}
template <class T1, class T2>
ostream& operator<<(ostream& os, const set<T1, T2>& v) {
  bool f = 1;
  os << "[";
  for (auto& i : v) {
    if (!f) os << ", ";
    os << i;
    f = 0;
  }
  return os << "]";
}
template <class T1, class T2>
ostream& operator<<(ostream& os, const multiset<T1, T2>& v) {
  bool f = 1;
  os << "[";
  for (auto& i : v) {
    if (!f) os << ", ";
    os << i;
    f = 0;
  }
  return os << "]";
}
template <class T1, class T2, class T3>
ostream& operator<<(ostream& os, const map<T1, T2, T3>& v) {
  bool f = 1;
  os << "[";
  for (auto& ii : v) {
    if (!f) os << ", ";
    os << "(" << ii.first << " -> " << ii.second << ") ";
    f = 0;
  }
  return os << "]";
}
template <class T1, class T2>
ostream& operator<<(ostream& os, const multimap<T1, T2>& v) {
  bool f = 1;
  os << "[";
  for (auto& ii : v) {
    if (!f) os << ", ";
    os << "(" << ii.first << " -> " << ii.second << ") ";
    f = 0;
  }
  return os << "]";
}
template <class T1, class T2>
ostream& operator<<(ostream& os, priority_queue<T1, T2> v) {
  bool f = 1;
  os << "[";
  while (!v.empty()) {
    auto x = v.top();
    v.pop();
    if (!f) os << ", ";
    f = 0;
    os << x;
  }
  return os << "]";
}
template <class T1, class T2>
void printarray(const T1& a, T2 sz, T2 beg = 0) {
  for (T2 i = beg; i < sz; i++) cout << a[i] << " ";
  cout << endl;
}
int XL, YL, ZL;
int n, m, k;
pair<int, int> sx, sy, sz;
tuple<int, int, int> In[100010];
inline int seg_in(pair<int, int> a, int b) {
  return a.first <= b && b <= a.second;
}
vector<tuple<int, int, int> > U[100010];
vector<tuple<int, int, int> > Q[100010];
vector<int> T[100010];
vector<int> vz[100010];
int L[100010];
void pre(int y, int z) {
  for (int i = y; i <= YL; i += (i & -i)) {
    vz[i].push_back(z);
  }
}
void update(int y, int z, int c) {
  for (int i = y; i <= YL; i += (i & -i)) {
    int nz = (int)(lower_bound((vz[i]).begin(), (vz[i]).end(), z) -
                   vz[i].begin() + 1);
    for (int j = nz; j <= L[i]; j += (j & -j)) T[i][j] += c;
  }
}
int read(int y, int z) {
  int res = 0;
  for (int i = y; i; i -= (i & -i)) {
    int nz =
        (int)(upper_bound((vz[i]).begin(), (vz[i]).end(), z) - vz[i].begin());
    for (int j = nz; j; j -= (j & -j)) res += T[i][j];
  }
  return res;
}
int ans[100010];
int main() {
  scanf("%d%d%d", &XL, &YL, &ZL);
  scanf("%d%d%d", &n, &m, &k);
  sx = sy = sz = pair<int, int>(1e9, -1);
  for (int i = 1; i <= n; i++) {
    int x, y, z;
    scanf("%d%d%d", &x, &y, &z);
    sx.first = min(sx.first, x);
    sx.second = max(sx.second, x);
    sy.first = min(sy.first, y);
    sy.second = max(sy.second, y);
    sz.first = min(sz.first, z);
    sz.second = max(sz.second, z);
  }
  for (int i = 1; i <= m; i++) {
    int x, y, z;
    scanf("%d%d%d", &x, &y, &z);
    In[i] = tuple<int, int, int>(x, y, z);
    if (seg_in(sx, x) && seg_in(sy, y) && seg_in(sz, z)) {
      puts("INCORRECT");
      return 0;
    }
  }
  puts("CORRECT");
  for (int i = 1; i <= m; i++) {
    int x, y, z;
    tie(x, y, z) = In[i];
    pair<int, int> vx, vy, vz;
    if (x < sx.first)
      vx = pair<int, int>(1, x);
    else if (seg_in(sx, x))
      vx = pair<int, int>(1, XL);
    else
      vx = pair<int, int>(x, XL);
    if (y < sy.first)
      vy = pair<int, int>(1, y);
    else if (seg_in(sy, y))
      vy = pair<int, int>(1, YL);
    else
      vy = pair<int, int>(y, YL);
    if (z < sz.first)
      vz = pair<int, int>(1, z);
    else if (seg_in(sz, z))
      vz = pair<int, int>(1, ZL);
    else
      vz = pair<int, int>(z, ZL);
    for (int ax : {vx.first, vx.second + 1}) {
      for (int ay : {vy.first, vy.second + 1}) {
        for (int az : {vz.first, vz.second + 1}) {
          int c = 1;
          if (ax != vx.first) c = -c;
          if (ay != vy.first) c = -c;
          if (az != vz.first) c = -c;
          U[ax].push_back(tuple<int, int, int>(ay, az, c));
        }
      }
    }
  }
  for (int i = 1; i <= k; i++) {
    int x, y, z;
    scanf("%d%d%d", &x, &y, &z);
    if (seg_in(sx, x) && seg_in(sy, y) && seg_in(sz, z)) {
      ans[i] = -1;
    } else
      Q[x].push_back(tuple<int, int, int>(y, z, i));
  }
  for (int i = 1; i <= XL; i++) {
    for (tuple<int, int, int> e : U[i]) {
      int y, z, c;
      tie(y, z, c) = e;
      pre(y, z);
    }
  }
  for (int i = 1; i <= YL; i++) {
    sort((vz[i]).begin(), (vz[i]).end());
    vz[i].resize(unique((vz[i]).begin(), (vz[i]).end()) - vz[i].begin());
    L[i] = ((int)(vz[i]).size());
    T[i].resize(L[i] + 1);
  }
  for (int i = 1; i <= XL; i++) {
    for (tuple<int, int, int> e : U[i]) {
      int y, z, c;
      tie(y, z, c) = e;
      update(y, z, c);
    }
    for (tuple<int, int, int> e : Q[i]) {
      int y, z, idx;
      tie(y, z, idx) = e;
      ans[idx] = read(y, z);
    }
  }
  for (int i = 1; i <= k; i++) {
    if (ans[i] == -1)
      puts("OPEN");
    else if (ans[i] == 0)
      puts("UNKNOWN");
    else
      puts("CLOSED");
  }
  return 0;
}
