#include <bits/stdc++.h>
using namespace std;
int n, conn, s;
int ask(int x, int y, int xx, int yy) {
  printf("? %d %d %d %d\n", x, y, xx, yy);
  fflush(stdout);
  scanf("%d", &s);
  return s;
}
int main() {
  cin >> n;
  vector<int> a, b;
  for (int i = 1; i <= n; i++)
    if (ask(i, 1, i, n) % 2 == 1) a.push_back(i);
  for (int j = 1; j <= n; j++)
    if (ask(1, j, n, j) % 2 == 1) b.push_back(j);
  vector<pair<int, int> > ans;
  if (a.size() == 2 && b.size() == 2) {
    for (int i = 0; i < 2; i++)
      for (int j = 0; j < 2; j++) {
        conn = ask(a[i], b[j], a[i], b[j]);
        if (conn == 1) ans.push_back(make_pair(a[i], b[j]));
      }
    printf("! %d %d %d %d", ans[0].first, ans[0].second, ans[1].first,
           ans[1].second);
    fflush(stdout);
    return 0;
  }
  if (a.empty()) {
    int l = 0, r = n;
    while (l + 1 < r) {
      int mid = (l + r) >> 1;
      if (ask(1, b[0], mid, b[0]) % 2)
        r = mid;
      else
        l = mid;
    }
    printf("! %d %d %d %d\n", r, b[0], r, b[1]);
  } else if (b.empty()) {
    int l = 0, r = n;
    while (l + 1 < r) {
      int mid = (l + r) >> 1;
      if (ask(a[0], 1, a[0], mid) % 2)
        r = mid;
      else
        l = mid;
    }
    printf("! %d %d %d %d\n", a[0], r, a[1], r);
  }
  fflush(stdout);
  return 0;
}
