#include <bits/stdc++.h>
int n, i, j, x, v[4], t;
bool ask(int x1, int y1, int x2, int y2) {
  printf("? %d %d %d %d\n", x1, y1, x2, y2);
  fflush(stdout);
  scanf("%d", &x);
  return x & 1;
}
void find(int x, bool f) {
  int l = 1, r = n;
  while (l < r) {
    int mid = l + r + 1 >> 1;
    if (f ? ask(x, mid, x, n) : ask(mid, x, n, x))
      l = mid;
    else
      r = mid - 1;
  }
  f ? (v[t++] = x, v[t++] = l) : (v[t++] = l, v[t++] = x);
}
int main() {
  scanf("%d", &n);
  for (i = 1; i < n; i++)
    if (ask(1, 1, n, i)) break;
  if (i != n) {
    for (j = n; j > 1; j--)
      if (ask(1, j, n, n)) break;
    find(i, 0), find(j, 0);
  } else {
    for (i = 1; i < n; i++)
      if (ask(1, 1, i, n)) break;
    for (j = n; j > 1; j--)
      if (ask(j, 1, n, n)) break;
    find(i, 1), find(j, 1);
  }
  putchar('!');
  for (i = 0; i < 4; i++) printf(" %d", v[i]);
  fflush(stdout);
}
