#include <bits/stdc++.h>
const int MAXINT = 2147483640;
const long long MAXLL = 9223372036854775800LL;
const long long MAXN = 1000000;
const double pi = 3.1415926535897932384626433832795;
using namespace std;
int x1[3][3], y[3][3];
int prot(int x) {
  if (x == 1)
    return 2;
  else
    return 1;
}
int main() {
  ios_base::sync_with_stdio(false);
  int n, l, r, x;
  cin >> n;
  l = 1;
  r = n;
  while (l < r) {
    int c = (l + r) / 2;
    cout << "? " << 1 << " " << c << " " << n << " " << n << endl;
    cin >> x;
    if (x == 2)
      l = c + 1;
    else
      r = c;
  }
  cout << "? " << 1 << " " << l << " " << n << " " << n << endl;
  cin >> x;
  if (x < 2) --l;
  y[1][1] = l;
  l = 1;
  r = n;
  while (l < r) {
    int c = (l + r) / 2;
    cout << "? " << 1 << " " << c << " " << n << " " << n << endl;
    cin >> x;
    if (x > 0)
      l = c + 1;
    else
      r = c;
  }
  if (l > 1) {
    cout << "? " << 1 << " " << l << " " << n << " " << n << endl;
    cin >> x;
    if (x == 0) --l;
  }
  y[2][1] = l;
  l = 1;
  r = n;
  while (l < r) {
    int c = (l + r) / 2;
    cout << "? " << 1 << " " << 1 << " " << n << " " << c << endl;
    cin >> x;
    if (x == 0)
      l = c + 1;
    else
      r = c;
  }
  y[1][2] = l;
  l = 1;
  r = n;
  while (l < r) {
    int c = (l + r) / 2;
    cout << "? " << 1 << " " << 1 << " " << n << " " << c << endl;
    cin >> x;
    if (x < 2)
      l = c + 1;
    else
      r = c;
  }
  y[2][2] = l;
  l = 1;
  r = n;
  while (l < r) {
    int c = (l + r) / 2;
    cout << "? " << c << " " << 1 << " " << n << " " << n << endl;
    cin >> x;
    if (x == 2)
      l = c + 1;
    else
      r = c;
  }
  cout << "? " << l << " " << 1 << " " << n << " " << n << endl;
  cin >> x;
  if (x < 2) --l;
  x1[1][1] = l;
  l = 1;
  r = n;
  while (l < r) {
    int c = (l + r) / 2;
    cout << "? " << c << " " << 1 << " " << n << " " << n << endl;
    cin >> x;
    if (x > 0)
      l = c + 1;
    else
      r = c;
  }
  if (l > 1) {
    cout << "? " << l << " " << 1 << " " << n << " " << n << endl;
    cin >> x;
    if (x == 0) --l;
  }
  x1[2][1] = l;
  l = 1;
  r = n;
  while (l < r) {
    int c = (l + r) / 2;
    cout << "? " << 1 << " " << 1 << " " << c << " " << n << endl;
    cin >> x;
    if (x == 0)
      l = c + 1;
    else
      r = c;
  }
  x1[1][2] = l;
  l = 1;
  r = n;
  while (l < r) {
    int c = (l + r) / 2;
    cout << "? " << 1 << " " << 1 << " " << c << " " << n << endl;
    cin >> x;
    if (x < 2)
      l = c + 1;
    else
      r = c;
  }
  x1[2][2] = l;
  for (int i1 = 1; i1 <= 2; i1++)
    for (int i2 = 1; i2 <= 2; i2++)
      for (int i3 = 1; i3 <= 2; i3++)
        for (int i4 = 1; i4 <= 2; i4++)
          if (x1[i1][1] <= x1[i2][2] && y[i3][1] <= y[i4][2]) {
            cout << "? " << x1[i1][1] << " " << y[i3][1] << " " << x1[i2][2]
                 << " " << y[i4][2] << endl;
            cin >> x;
            if (x == 1 && x1[prot(i1)][1] <= x1[prot(i2)][2] &&
                y[prot(i3)][1] <= y[prot(i4)][2]) {
              cout << "? " << x1[prot(i1)][1] << " " << y[prot(i3)][1] << " "
                   << x1[prot(i2)][2] << " " << y[prot(i4)][2] << endl;
              cin >> x;
              if (x == 1) {
                cout << "! " << x1[i1][1] << " " << y[i3][1] << " " << x1[i2][2]
                     << " " << y[i4][2] << " " << x1[prot(i1)][1] << " "
                     << y[prot(i3)][1] << " " << x1[prot(i2)][2] << " "
                     << y[prot(i4)][2] << endl;
                return 0;
              }
            }
          }
  return 0;
}
