#include <bits/stdc++.h>
int i, fl, n, la, ra, da, ua, l, r, mid, tmp, ans[9], cnt;
inline int ask(int lx, int ly, int rx, int ry) {
  if (lx > rx || ly > ry) return 0;
  printf("? %d %d %d %d\n", lx, ly, rx, ry);
  fflush(stdout);
  scanf("%d", &lx);
  return lx;
}
inline void sol(int lx, int ly, int rx, int ry) {
  int l = lx, r = rx, tmp = lx;
  while (l <= r) {
    mid = (l + r) >> 1;
    ua = ask(mid, ly, rx, ry);
    if (!ua)
      r = mid - 1;
    else
      l = mid + 1, tmp = mid;
  }
  ans[++cnt] = tmp, l = ly, r = ry;
  tmp = ly;
  while (l <= r) {
    mid = (l + r) >> 1;
    ra = ask(lx, mid, rx, ry);
    if (!ra)
      r = mid - 1;
    else
      l = mid + 1, tmp = mid;
  }
  ans[++cnt] = tmp, l = lx, r = rx, tmp = rx;
  while (l <= r) {
    mid = (l + r) >> 1;
    da = ask(lx, ly, mid, ry);
    if (!da)
      l = mid + 1;
    else
      r = mid - 1, tmp = mid;
  }
  ans[++cnt] = tmp, l = ly, r = ry;
  tmp = ry;
  while (l <= r) {
    mid = (l + r) >> 1;
    la = ask(lx, ly, rx, mid);
    if (!la)
      l = mid + 1;
    else
      r = mid - 1, tmp = mid;
  }
  ans[++cnt] = tmp;
}
int main() {
  scanf("%d", &n);
  l = 1, r = n, fl = cnt = 0;
  while (l <= r) {
    mid = (l + r) >> 1;
    la = ask(1, 1, n, mid), ra = ask(1, mid + 1, n, n);
    if (la && ra) fl = 1;
    if (!la)
      l = mid + 1;
    else
      r = mid - 1;
  }
  if (fl)
    sol(1, 1, n, l), sol(1, l + 1, n, n);
  else {
    l = 1, r = n;
    while (l <= r) {
      mid = (l + r) >> 1;
      da = ask(1, 1, mid, n);
      if (!da)
        l = mid + 1;
      else
        r = mid - 1;
    }
    sol(1, 1, l, n);
    sol(l + 1, 1, n, n);
  }
  for (putchar('!'), putchar(' '), i = 1; i < 9; i++) printf("%d ", ans[i]);
  fflush(stdout);
}
