#include <bits/stdc++.h>
using namespace std;
inline int _in() {
  char tt = getchar();
  int o, f = 0;
  while (tt < '0' || tt > '9') {
    if (tt == '-') f = 1;
    tt = getchar();
  }
  for (o = 0; tt >= '0' && tt <= '9'; tt = getchar()) o = o * 10 + tt - '0';
  return f ? -o : o;
}
int n;
int Qry(int x1, int y1, int x2, int y2) {
  printf("? %d %d %d %d\n", x1, y1, x2, y2);
  fflush(stdout);
  int s;
  scanf("%d", &s);
  return s;
}
void Get(int& a, int& b, int& c, int& d, int x1, int y1, int x2, int y2) {
  int l = x1, r = x2, m;
  while (l <= r) {
    m = l + r >> 1;
    if (Qry(x1, y1, m, y2) == 1)
      b = m, r = m - 1;
    else
      l = m + 1;
  }
  l = x1, r = x2;
  while (l <= r) {
    m = l + r >> 1;
    if (Qry(m, y1, x2, y2) == 1)
      a = m, l = m + 1;
    else
      r = m - 1;
  }
  l = y1, r = y2;
  while (l <= r) {
    m = l + r >> 1;
    if (Qry(x1, y1, x2, m) == 1)
      d = m, r = m - 1;
    else
      l = m + 1;
  }
  l = y1, r = y2;
  while (l <= r) {
    m = l + r >> 1;
    if (Qry(x1, m, x2, y2) == 1)
      c = m, l = m + 1;
    else
      r = m - 1;
  }
}
int main() {
  scanf("%d", &n);
  int l = 1, r = n, m, a1;
  while (l <= r) {
    m = l + r >> 1;
    if (Qry(1, 1, m, n) == 0)
      l = m + 1;
    else
      a1 = m, r = m - 1;
  }
  if (Qry(1, 1, a1, n) == 1 && Qry(a1 + 1, 1, n, n) == 1) {
    int a, b, c, d, e, f, g, h;
    Get(a, b, c, d, 1, 1, a1, n);
    Get(e, f, g, h, a1 + 1, 1, n, n);
    cout << "!"
         << " " << a << " " << c << " " << b << " " << d << " " << e << " " << g
         << " " << f << " " << h << endl;
    return 0;
  }
  l = 1, r = n;
  while (l <= r) {
    m = l + r >> 1;
    if (Qry(1, 1, n, m) == 0)
      l = m + 1;
    else
      a1 = m, r = m - 1;
  }
  int a, b, c, d, e, f, g, h;
  Get(a, b, c, d, 1, 1, n, a1);
  Get(e, f, g, h, 1, a1 + 1, n, n);
  cout << "!"
       << " " << a << " " << c << " " << b << " " << d << " " << e << " " << g
       << " " << f << " " << h << endl;
  return 0;
}
