func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, st, dr, mij, r, l12, l11, c12, c11;   int l21, l22, c21, c22;   int nr;   void getldrept(int li, int ls, int ci, int cs) {     int st, dr;     int l1, c1, l2, c2;     st = li;     dr = ls;     while (st < dr) {       mij = (st + dr) / 2;       cout <<  ?   << li <<     << ci <<     << mij <<     << cs <<   n ;       cin >> r;       if (r)         dr = mij;       else         st = mij + 1;     }     l2 = st;     st = li;     dr = l2;     while (st < dr) {       mij = (st + dr + 1) / 2;       cout <<  ?   << mij <<     << ci <<     << l2 <<     << cs <<   n ;       cin >> r;       if (r)         st = mij;       else         dr = mij - 1;     }     l1 = st;     st = ci;     dr = cs;     while (st < dr) {       mij = (st + dr) / 2;       cout <<  ?   << l1 <<     << ci <<     << l2 <<     << mij <<   n ;       cin >> r;       if (r)         dr = mij;       else         st = mij + 1;     }     c2 = st;     st = ci;     dr = c2;     while (st < dr) {       mij = (st + dr + 1) / 2;       cout <<  ?   << l1 <<     << mij <<     << l2 <<     << c2 <<   n ;       cin >> r;       if (r)         st = mij;       else         dr = mij - 1;     }     c1 = st;     if (nr == 1) {       l11 = l1;       l12 = l2;       c11 = c1;       c12 = c2;     } else {       l21 = l1;       l22 = l2;       c21 = c1;       c22 = c2;     }   }   int main() {     cin >> n;     nr = 1;     getldrept(1, n, 1, n);     nr = 2;     if (l11 > 1) {       cout <<  ?   << 1 <<     << 1 <<     << l11 - 1 <<     << n <<   n ;       cin >> r;       if (r) {         getldrept(1, l11 - 1, 1, n);         cout <<  !   << l11 <<     << c11 <<     << l12 <<     << c12;         cout <<     << l21 <<     << c21 <<     << l22 <<     << c22;         return 0;       }     }     if (l12 < n) {       cout <<  ?   << l12 + 1 <<     << 1 <<     << n <<     << n <<   n ;       cin >> r;       if (r) {         getldrept(l12 + 1, n, 1, n);         cout <<  !   << l11 <<     << c11 <<     << l12 <<     << c12;         cout <<     << l21 <<     << c21 <<     << l22 <<     << c22;         return 0;       }     }     if (c11 > 1) {       cout <<  ?   << 1 <<     << 1 <<     << n <<     << c11 - 1 <<   n ;       cin >> r;       if (r) {         getldrept(1, n, 1, c11 - 1);         cout <<  !   << l11 <<     << c11 <<     << l12 <<     << c12;         cout <<     << l21 <<     << c21 <<     << l22 <<     << c22;         return 0;       }     }     if (c12 < n) {       cout <<  ?   << 1 <<     << c12 + 1 <<     << n <<     << n <<   n ;       cin >> r;       if (r) {         getldrept(1, n, c12 + 1, n);         cout <<  !   << l11 <<     << c11 <<     << l12 <<     << c12;         cout <<     << l21 <<     << c21 <<     << l22 <<     << c22;         return 0;       }     }   }   