#include <bits/stdc++.h>   using namespace std;   const long long INFLL = 1e18;   const int MAXN = 1e6 + 100;   const long long INF = 1e9;   const long long mod1 = 1e9 + 7;   const long long mod2 = 2e9 + 11;   int n;   pair<pair<int, int>, pair<int, int> > a = {{0, 0}, {0, 0}},                                         b = {{0, 0}, {0, 0}};   pair<pair<int, int>, pair<int, int> > solve(int x, int y, int x1, int y1) {     pair<pair<int, int>, pair<int, int> > ans;     ans.first = {x, y};     ans.second = {x1, y1};     int l = x + 1, r = x1;     while (l <= r) {       int mid = (l + r) >> 1;       cout <<  ?   << mid <<     << y <<     << x1 <<     << y1 << endl;       int ok;       cin >> ok;       if (ok == 0) {         r = mid - 1;       } else {         l = mid + 1;         ans.first.first = mid;       }     }     l = y + 1, r = y1;     while (l <= r) {       int mid = (l + r) >> 1;       cout <<  ?   << x <<     << mid <<     << x1 <<     << y1 << endl;       int ok;       cin >> ok;       if (ok == 0) {         r = mid - 1;       } else {         l = mid + 1;         ans.first.second = mid;       }     }     l = y, r = y1 - 1;     while (l <= r) {       int mid = (l + r) >> 1;       cout <<  ?   << x <<     << y <<     << x1 <<     << mid << endl;       int ok;       cin >> ok;       if (ok == 0) {         l = mid + 1;       } else {         r = mid - 1;         ans.second.second = mid;       }     }     l = x, r = x1 - 1;     while (l <= r) {       int mid = (l + r) >> 1;       cout <<  ?   << x <<     << y <<     << mid <<     << y1 << endl;       int ok;       cin >> ok;       if (ok == 0) {         l = mid + 1;       } else {         r = mid - 1;         ans.second.first = mid;       }     }     return ans;   }   pair<pair<int, int>, pair<int, int> > solve1(int x, int y, int x1, int y1) {     pair<pair<int, int>, pair<int, int> > ans;     ans.first = {x, y};     ans.second = {x1, y1};     int l = x + 1, r = x1;     while (l <= r) {       int mid = (l + r) >> 1;       cout <<  ?   << mid <<     << y <<     << x1 <<     << y1 << endl;       int ok;       cin >> ok;       if (mid <= a.first.first && y <= a.first.second && x1 >= a.second.first &&           y1 >= a.second.second)         ok--;       if (ok == 0) {         r = mid - 1;       } else {         l = mid + 1;         ans.first.first = mid;       }     }     l = y + 1, r = y1;     while (l <= r) {       int mid = (l + r) >> 1;       cout <<  ?   << x <<     << mid <<     << x1 <<     << y1 << endl;       int ok;       cin >> ok;       if (x <= a.first.first && mid <= a.first.second && x1 >= a.second.first &&           y1 >= a.second.second)         ok--;       if (ok == 0) {         r = mid - 1;       } else {         l = mid + 1;         ans.first.second = mid;       }     }     l = y, r = y1 - 1;     while (l <= r) {       int mid = (l + r) >> 1;       cout <<  ?   << x <<     << y <<     << x1 <<     << mid << endl;       int ok;       cin >> ok;       if (x <= a.first.first && y <= a.first.second && x1 >= a.second.first &&           mid >= a.second.second)         ok--;       if (ok == 0) {         l = mid + 1;       } else {         r = mid - 1;         ans.second.second = mid;       }     }     l = x, r = x1 - 1;     while (l <= r) {       int mid = (l + r) >> 1;       cout <<  ?   << x <<     << y <<     << mid <<     << y1 << endl;       int ok;       cin >> ok;       if (x <= a.first.first && y <= a.first.second && mid >= a.second.first &&           y1 >= a.second.second)         ok--;       if (ok == 0) {         l = mid + 1;       } else {         r = mid - 1;         ans.second.first = mid;       }     }     return ans;   }   int main() {     cin >> n;     int l = 1, r = n;     int ans = 1;     pair<pair<int, int>, pair<int, int> > ha = {{0, 0}, {0, 0}};     while (l <= r) {       int mid = ((l + r) >> 1);       cout <<  ?   << mid <<     << 1 <<     << n <<     << n << endl;       int x;       cin >> x;       if (x == 2) {         ans = mid;         l = mid + 1;       } else {         if (x == 0) {           r = mid - 1;         } else {           ha = {{mid, 1}, {n, n}};           break;         }       }     }     if (ha.first.second != 0) {       a = solve(ha.first.first, ha.first.second, ha.second.first,                 ha.second.second);       b = solve1(1, 1, n, n);     } else {       l = 1, r = n;       int anss = 1;       ha = {{0, 0}, {0, 0}};       while (l <= r) {         int mid = ((l + r) >> 1);         cout <<  ?   << ans <<     << mid <<     << n <<     << n << endl;         int x;         cin >> x;         if (x == 2) {           anss = mid;           l = mid + 1;         } else {           if (x == 0) {             r = mid - 1;           } else {             ha = {{ans, mid}, {n, n}};             break;           }         }       }       a = solve(ha.first.first, ha.first.second, ha.second.first,                 ha.second.second);       b = solve1(1, 1, n, n);     }     cout <<  !   << a.first.first <<     << a.first.second <<              << a.second.first <<     << a.second.second <<     << b.first.first          <<     << b.first.second <<     << b.second.first <<              << b.second.second << endl;   }