#include <bits/stdc++.h>
using namespace std;
void solve() {
  int n;
  cin >> n;
  int l1min = 1, l1max = n + 1;
  while (l1max - l1min > 1) {
    int mid = l1min + (l1max - l1min) / 2;
    cout << "? " << mid << " " << 1 << " " << n << " " << n << endl;
    int cnt;
    cin >> cnt;
    if (cnt)
      l1min = mid;
    else
      l1max = mid;
  }
  int l1 = l1min;
  int r1min = l1 - 1, r1max = n;
  while (r1max - r1min > 1) {
    int mid = r1min + (r1max - r1min) / 2;
    cout << "? " << l1 << " " << 1 << " " << mid << " " << n << endl;
    int cnt;
    cin >> cnt;
    if (!cnt)
      r1min = mid;
    else
      r1max = mid;
  }
  int r1 = r1max;
  int d1min = 1, d1max = n + 1;
  while (d1max - d1min > 1) {
    int mid = d1min + (d1max - d1min) / 2;
    cout << "? " << l1 << " " << mid << " " << r1 << " " << n << endl;
    int cnt;
    cin >> cnt;
    if (cnt)
      d1min = mid;
    else
      d1max = mid;
  }
  int d1 = d1min;
  int u1min = d1 - 1, u1max = n;
  while (u1max - u1min > 1) {
    int mid = u1min + (u1max - u1min) / 2;
    cout << "? " << l1 << " " << d1 << " " << r1 << " " << mid << endl;
    int cnt;
    cin >> cnt;
    if (!cnt)
      u1min = mid;
    else
      u1max = mid;
  }
  int u1 = u1max;
  int l2min = 1, l2max = n + 1;
  while (l2max - l2min > 1) {
    int mid = l2min + (l2max - l2min) / 2;
    cout << "? " << mid << " " << 1 << " " << n << " " << n << endl;
    int cnt;
    cin >> cnt;
    cnt -= (l1 >= mid and r1 <= n and d1 >= 1 and u1 <= n);
    if (cnt)
      l2min = mid;
    else
      l2max = mid;
  }
  int l2 = l2min;
  int r2min = l2 - 1, r2max = n;
  while (r2max - r2min > 1) {
    int mid = r2min + (r2max - r2min) / 2;
    cout << "? " << l2 << " " << 1 << " " << mid << " " << n << endl;
    int cnt;
    cin >> cnt;
    cnt -= (l1 >= l2 and r1 <= mid and d1 >= 1 and u1 <= n);
    if (!cnt)
      r2min = mid;
    else
      r2max = mid;
  }
  int r2 = r2max;
  int d2min = 1, d2max = n + 1;
  while (d2max - d2min > 1) {
    int mid = d2min + (d2max - d2min) / 2;
    cout << "? " << l2 << " " << mid << " " << r2 << " " << n << endl;
    int cnt;
    cin >> cnt;
    cnt -= (l1 >= l2 and r1 <= r2 and d1 >= mid and u1 <= n);
    if (cnt)
      d2min = mid;
    else
      d2max = mid;
  }
  int d2 = d2min;
  int u2min = d2 - 1, u2max = n;
  while (u2max - u2min > 1) {
    int mid = u2min + (u2max - u2min) / 2;
    cout << "? " << l2 << " " << d2 << " " << r2 << " " << mid << endl;
    int cnt;
    cin >> cnt;
    cnt -= (l1 >= l2 and r1 <= r2 and d1 >= d2 and u1 <= mid);
    if (!cnt)
      u2min = mid;
    else
      u2max = mid;
  }
  int u2 = u2max;
  cout << "! " << l1 << " " << d1 << " " << r1 << " " << u1 << " " << l2 << " "
       << d2 << " " << r2 << " " << u2;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int t = 1;
  while (t--) {
    solve();
  }
  return 0;
}
