#include <bits/stdc++.h>
using namespace std;
int zapytaj(int a, int b, int c, int d) {
  printf("? %d %d %d %d\n", a, b, c, d);
  fflush(stdout);
  int X;
  scanf("%d", &X) ?: 0;
  return X;
}
int n, x, a, b, c, d, x1, x2, prezes, y2, t1, t2, t3, t4;
pair<pair<int, int>, pair<int, int> > ps, ps2;
pair<pair<int, int>, pair<int, int> > znajdz(int a, int b, int c, int d) {
  int u = a, v = c;
  pair<pair<int, int>, pair<int, int> > ans;
  while (u < v) {
    int s = (u + v + 1) >> 1;
    int p = zapytaj(s, b, c, d);
    if (s <= t1 && b <= t2 && c >= t3 && d >= t4) p--;
    if (p == 0)
      v = s - 1;
    else
      u = s;
  }
  ans.first.first = u;
  u = ans.first.first;
  v = c;
  while (u < v) {
    int s = (u + v) >> 1;
    int p = zapytaj(ans.first.first, b, s, d);
    if (ans.first.first <= t1 && b <= t2 && s >= t3 && d >= t4) p--;
    if (p == 0)
      u = s + 1;
    else
      v = s;
  }
  ans.second.first = u;
  u = b;
  v = d;
  while (u < v) {
    int s = (u + v + 1) >> 1;
    int p = zapytaj(ans.first.first, s, ans.second.first, d);
    if (ans.first.first <= t1 && s <= t2 && ans.second.first >= t3 && d >= t4)
      p--;
    if (p == 0)
      v = s - 1;
    else
      u = s;
  }
  ans.first.second = u;
  u = ans.first.second;
  v = d;
  while (u < v) {
    int s = (u + v) >> 1;
    int p = zapytaj(ans.first.first, ans.first.second, ans.second.first, s);
    if (ans.first.first <= t1 && ans.first.second <= t2 &&
        ans.second.first >= t3 && s >= t4)
      p--;
    if (p == 0)
      u = s + 1;
    else
      v = s;
  }
  ans.second.second = u;
  return ans;
}
int main() {
  scanf("%d", &n) ?: 0;
  a = 1;
  b = n;
  while (a < b) {
    int s = (a + b + 1) >> 1;
    int p = zapytaj(s, 1, n, n);
    if (p == 0)
      b = s - 1;
    else
      a = s;
  }
  x1 = a;
  if (zapytaj(x1, 1, n, n) == 1)
    ps = znajdz(x1, 1, n, n);
  else {
    a = 1;
    b = n;
    while (a < b) {
      int s = (a + b + 1) >> 1;
      int p = zapytaj(1, s, n, n);
      if (p == 0)
        b = s - 1;
      else
        a = s;
    }
    prezes = a;
    ps = znajdz(1, prezes, n, n);
  }
  t1 = ps.first.first;
  t2 = ps.first.second;
  t3 = ps.second.first;
  t4 = ps.second.second;
  ps2 = znajdz(1, 1, n, n);
  printf("! %d %d %d %d %d %d %d %d\n", t1, t2, t3, t4, ps2.first.first,
         ps2.first.second, ps2.second.first, ps2.second.second);
  fflush(stdout);
}
