func_code_string: #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;   }   