#include <bits/stdc++.h>
using namespace std;
const int N = 200005;
int n = 0;
bool sw = false;
int ask(int x1, int y1, int x2, int y2) {
  if (sw) {
    swap(x1, y1);
    swap(x2, y2);
  }
  printf("? %d %d %d %d\n", x1, y1, x2, y2);
  fflush(stdout);
  int ans = 0;
  scanf("%d", &ans);
  return ans;
}
int tt(int i, bool f) {
  int p = 0, q = 0, mid = 0, now = 0;
  p = 1;
  q = n;
  while (p <= q) {
    mid = (p + q) / 2;
    if (!f)
      now = ask(1, 1, i, mid);
    else
      now = ask(i, 1, n, mid);
    if (now & 1) {
      q = mid - 1;
    } else {
      p = mid + 1;
    }
  }
  return p;
}
bool f() {
  int i = 0, now = 0, mid = 0, ans1 = 0, ans2 = 0, p = 0, q = 0;
  for (i = 1; i < n; i++) {
    now = ask(1, 1, i, n);
    if (now & 1) {
      ans1 = tt(i, false);
      p = i + 1;
      q = n;
      while (p <= q) {
        mid = (p + q) / 2;
        now = ask(mid, 1, n, n);
        if (now & 1) {
          p = mid + 1;
        } else {
          q = mid - 1;
        }
      }
      ans2 = tt(q, true);
      if (sw) {
        swap(ans1, i);
        swap(ans2, q);
      }
      printf("! %d %d %d %d\n", i, ans1, q, ans2);
      return true;
    }
  }
  return false;
}
void solve() {
  scanf("%d", &n);
  if (f()) return;
  sw = true;
  f();
}
int main() {
  int o = 1;
  while (o--) {
    solve();
    fflush(stdout);
  }
  return 0;
}
