#include <bits/stdc++.h>
using namespace std;
int n, l, r, m, t, sx, sy, tx, ty;
int col1 = 0, col2 = 0, row1 = 0, row2 = 0;
inline void ask(int l, int r, int u, int d) {
  printf("? %d %d %d %d\n", u, l, d, r);
  fflush(stdout);
  scanf("%d", &t);
  return;
}
void answer(void) {
  printf("! %d %d %d %d\n", sx, sy, tx, ty);
  fflush(stdout);
  return;
}
int main(void) {
  scanf("%d", &n);
  for (int i = 1; i < n; i++) {
    ask(i, i, 1, n);
    if (t & 1) {
      if (col1 != 0)
        col2 = i;
      else
        col1 = i;
    }
  }
  if (col2 == 0) col2 = n;
  if (col1 != 0) {
    l = 1;
    r = n;
    while (l < r) {
      m = (l + r) >> 1;
      ask(col1, col1, l, m);
      if (t & 1)
        r = m;
      else
        l = m + 1;
    }
    sx = l;
    sy = col1;
    l = 1;
    r = n;
    while (l < r) {
      m = (l + r) >> 1;
      ask(col2, col2, l, m);
      if (t & 1)
        r = m;
      else
        l = m + 1;
    }
    tx = l;
    ty = col2;
    answer();
    return 0;
  }
  for (int i = 1; i < n; i++) {
    ask(1, n, i, i);
    if (t & 1) {
      if (row1 != 0)
        row2 = i;
      else
        row1 = i;
    }
  }
  if (row2 == 0) row2 = n;
  l = 1;
  r = n;
  while (l < r) {
    m = (l + r) >> 1;
    ask(l, m, row1, row1);
    if (t & 1)
      r = m;
    else
      l = m + 1;
  }
  sx = row1;
  sy = l;
  l = 1;
  r = n;
  while (l < r) {
    m = (l + r) >> 1;
    ask(l, m, row2, row2);
    if (t & 1)
      r = m;
    else
      l = m + 1;
  }
  tx = row2;
  ty = l;
  answer();
  return 0;
}
