#include <bits/stdc++.h>
using namespace std;
int n;
bool isValid(int x1, int y1, int x2, int y2) { return x1 <= x2 && y1 <= y2; }
int ask(int x1, int y1, int x2, int y2) {
  int ret = 0;
  cout << "? " << x1 << " " << y1 << " " << x2 << " " << y2 << "\n";
  cout.flush();
  cin >> ret;
  return ret;
}
bool check(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) {
  if (!isValid(x1, y1, x2, y2)) return 0;
  if (!isValid(x3, y3, x4, y4)) return 0;
  int ret1 = ask(x1, y1, x2, y2);
  int ret2 = ask(x3, y3, x4, y4);
  return (ret1 > 0 && ret2 > 0);
}
int main() {
  ios::sync_with_stdio(0);
  cin >> n;
  int x1, y1, x2, y2, x3, y3, x4, y4;
  int l, r;
  l = 1;
  r = n;
  while (l <= r) {
    int s = (l + r) / 2;
    if (ask(s, 1, n, n) == 2) {
      l = s + 1;
      x1 = s;
    } else {
      r = s - 1;
    }
  }
  l = 1;
  r = n;
  while (l <= r) {
    int s = (l + r) / 2;
    if (ask(s, 1, n, n) >= 1) {
      l = s + 1;
      x3 = s;
    } else {
      r = s - 1;
    }
  }
  l = 1;
  r = n;
  while (l <= r) {
    int s = (l + r) / 2;
    if (ask(1, 1, s, n) == 2) {
      r = s - 1;
      x2 = s;
    } else {
      l = s + 1;
    }
  }
  l = 1;
  r = n;
  while (l <= r) {
    int s = (l + r) / 2;
    if (ask(1, 1, s, n) >= 1) {
      r = s - 1;
      x4 = s;
    } else {
      l = s + 1;
    }
  }
  l = 1;
  r = n;
  while (l <= r) {
    int s = (l + r) / 2;
    if (ask(1, s, n, n) == 2) {
      l = s + 1;
      y1 = s;
    } else {
      r = s - 1;
    }
  }
  l = 1;
  r = n;
  while (l <= r) {
    int s = (l + r) / 2;
    if (ask(1, s, n, n) >= 1) {
      l = s + 1;
      y3 = s;
    } else {
      r = s - 1;
    }
  }
  l = 1;
  r = n;
  while (l <= r) {
    int s = (l + r) / 2;
    if (ask(1, 1, n, s) == 2) {
      r = s - 1;
      y2 = s;
    } else {
      l = s + 1;
    }
  }
  l = 1;
  r = n;
  while (l <= r) {
    int s = (l + r) / 2;
    if (ask(1, 1, n, s) >= 1) {
      r = s - 1;
      y4 = s;
    } else {
      l = s + 1;
    }
  }
  vector<int> xx1{x1, x3};
  vector<int> xx2{x2, x4};
  vector<int> yy1{y1, y3};
  vector<int> yy2{y2, y4};
  int xxx3 = xx1[1];
  for (int xxx1 : xx1) {
    int xxx4 = xx2[1];
    for (int xxx2 : xx2) {
      int yyy3 = yy1[1];
      for (int yyy1 : yy1) {
        int yyy4 = yy2[1];
        for (int yyy2 : yy2) {
          if (check(xxx1, yyy1, xxx2, yyy2, xxx3, yyy3, xxx4, yyy4)) {
            cout << "! " << xxx1 << " " << yyy1 << " " << xxx2 << " " << yyy2
                 << " " << xxx3 << " " << yyy3 << " " << xxx4 << " " << yyy4;
            return 0;
          }
          yyy4 = yyy2;
        }
        yyy3 = yyy1;
      }
      xxx4 = xxx2;
    }
    xxx3 = xxx1;
  }
  return 0;
}
