#include <bits/stdc++.h>   using namespace std;   bool containsr(int x21, int y21, int x22, int y22, int x11, int y11, int x12,                  int y12) {     return x21 >= x11 && y21 >= y11 && x22 <= x12 && y22 <= y12;   }   int main() {     int n;     cin >> n;     int found = 0;     int x11 = -1, y11 = -1, x12 = -1, y12 = -1;     int bottom = 1;     int left = 1;     int top = n;     int right = n;     int l = bottom, r = top;     while (true) {       if (l > r) {         top = l;         break;       }       int m = (r + l) / 2;       cout <<  ?   << left <<     << bottom <<     << right <<     << m << endl;       fflush(stdout);       int res;       cin >> res;       if (res >= 1) {         r = m - 1;       } else {         l = m + 1;       }     }     l = bottom, r = top;     while (true) {       if (l > r) {         bottom = r;         break;       }       int m = (r + l) / 2;       cout <<  ?   << left <<     << m <<     << right <<     << top << endl;       fflush(stdout);       int res;       cin >> res;       if (res >= 1) {         l = m + 1;       } else {         r = m - 1;       }     }     l = left, r = right;     while (true) {       if (l > r) {         right = l;         break;       }       int m = (r + l) / 2;       cout <<  ?   << left <<     << bottom <<     << m <<     << top << endl;       fflush(stdout);       int res;       cin >> res;       if (res >= 1) {         r = m - 1;       } else {         l = m + 1;       }     }     l = left, r = right;     while (true) {       if (l > r) {         left = r;         break;       }       int m = (r + l) / 2;       cout <<  ?   << m <<     << bottom <<     << right <<     << top << endl;       fflush(stdout);       int res;       cin >> res;       if (res >= 1) {         l = m + 1;       } else {         r = m - 1;       }     }     x11 = left, y11 = bottom, x12 = right, y12 = top;     int x21 = -1, y21 = -1, x22 = -1, y22 = -1;     bottom = 1;     left = 1;     top = n;     right = n;     l = bottom, r = top;     while (true) {       if (l > r) {         top = l;         break;       }       int m = (r + l) / 2;       cout <<  ?   << left <<     << bottom <<     << right <<     << m << endl;       fflush(stdout);       int res;       cin >> res;       if (containsr(x11, y11, x12, y12, left, bottom, right, m)) {         res--;       }       if (res >= 1) {         r = m - 1;       } else {         l = m + 1;       }     }     l = bottom, r = top;     while (true) {       if (l > r) {         bottom = r;         break;       }       int m = (r + l) / 2;       cout <<  ?   << left <<     << m <<     << right <<     << top << endl;       fflush(stdout);       int res;       cin >> res;       if (containsr(x11, y11, x12, y12, left, m, right, top)) {         res--;       }       if (res >= 1) {         l = m + 1;       } else {         r = m - 1;       }     }     l = left, r = right;     while (true) {       if (l > r) {         right = l;         break;       }       int m = (r + l) / 2;       cout <<  ?   << left <<     << bottom <<     << m <<     << top << endl;       fflush(stdout);       int res;       cin >> res;       if (containsr(x11, y11, x12, y12, left, bottom, m, top)) {         res--;       }       if (res >= 1) {         r = m - 1;       } else {         l = m + 1;       }     }     l = left, r = right;     while (true) {       if (l > r) {         left = r;         break;       }       int m = (r + l) / 2;       cout <<  ?   << m <<     << bottom <<     << right <<     << top << endl;       fflush(stdout);       int res;       cin >> res;       if (containsr(x11, y11, x12, y12, m, bottom, right, top)) {         res--;       }       if (res >= 1) {         l = m + 1;       } else {         r = m - 1;       }     }     x21 = left, y21 = bottom, x22 = right, y22 = top;     cout <<  !   << x11 <<     << y11 <<     << x12 <<     << y12 <<     << x21          <<     << y21 <<     << x22 <<     << y22 << endl;   }