#include <bits/stdc++.h>
using namespace std;
map<pair<pair<int, int>, pair<int, int> >, int> m;
map<pair<pair<int, int>, pair<int, int> >, bool> k;
int n;
vector<int> x, y;
bool f = false;
int yright1, yleft1, xright1, xleft1;
int yright2, yleft2, xright2, xleft2;
bool cmp(int i, int j) { return i > j; }
int ask(int a, int b, int u, int v) {
  int res = 0;
  if (k[pair<pair<int, int>, pair<int, int> >(pair<int, int>(a, b),
                                              pair<int, int>(u, v))] == 1) {
    res = m[pair<pair<int, int>, pair<int, int> >(pair<int, int>(a, b),
                                                  pair<int, int>(u, v))];
  } else {
    printf("? %d %d %d %d\n", a, b, u, v);
    fflush(stdout);
    scanf("%d", &res);
    k[pair<pair<int, int>, pair<int, int> >(pair<int, int>(a, b),
                                            pair<int, int>(u, v))] = 1;
    m[pair<pair<int, int>, pair<int, int> >(pair<int, int>(a, b),
                                            pair<int, int>(u, v))] = res;
  }
  if (f) {
    if (a <= xleft1 && xleft1 <= u && a <= xright1 && xright1 <= u &&
        b <= yleft1 && yleft1 <= v && b <= yright1 && yright1 <= v)
      res--;
  }
  return res;
}
int main() {
  scanf("%d", &n);
  int l = 0, r = n + 1, mid;
  while (r - l > 1) {
    mid = (l + r) / 2;
    int a = ask(1, 1, n, mid);
    if (a >= 1)
      r = mid;
    else
      l = mid;
  }
  yright1 = r;
  l = 0, r = yright1 + 1, mid;
  while (r - l > 1) {
    mid = (l + r) / 2;
    int a = ask(1, mid, n, yright1);
    if (a >= 1)
      l = mid;
    else
      r = mid;
  }
  yleft1 = l;
  l = 0, r = n + 1, mid;
  while (r - l > 1) {
    mid = (l + r) / 2;
    int a = ask(1, yleft1, mid, yright1);
    if (a >= 1)
      r = mid;
    else
      l = mid;
  }
  xright1 = r;
  l = 0, r = xright1 + 1, mid;
  while (r - l > 1) {
    mid = (l + r) / 2;
    int a = ask(mid, yleft1, xright1, yright1);
    if (a >= 1)
      l = mid;
    else
      r = mid;
  }
  xleft1 = l;
  f = true;
  l = 0, r = n + 1, mid;
  while (r - l > 1) {
    mid = (l + r) / 2;
    int a = ask(1, mid, n, n);
    if (a >= 1)
      l = mid;
    else
      r = mid;
  }
  yleft2 = l;
  l = yleft2 - 1, r = n + 1, mid;
  while (r - l > 1) {
    mid = (l + r) / 2;
    int a = ask(1, yleft2, n, mid);
    if (a >= 1)
      r = mid;
    else
      l = mid;
  }
  yright2 = r;
  l = 0, r = n + 1, mid;
  while (r - l > 1) {
    mid = (l + r) / 2;
    int a = ask(1, yleft2, mid, yright2);
    if (a >= 1)
      r = mid;
    else
      l = mid;
  }
  xright2 = r;
  l = 0, r = xright2 + 1, mid;
  while (r - l > 1) {
    mid = (l + r) / 2;
    int a = ask(mid, yleft2, xright2, yright2);
    if (a >= 1)
      l = mid;
    else
      r = mid;
  }
  xleft2 = l;
  printf("! %d %d %d %d %d %d %d %d\n", xleft1, yleft1, xright1, yright1,
         xleft2, yleft2, xright2, yright2);
}
