#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
bool found = false;
pair<pair<int, int>, pair<int, int> > ans[2];
void find_rectangle(int n, int i);
int query(pair<pair<int, int>, pair<int, int> > r);
bool is_enclosed(pair<pair<int, int>, pair<int, int> > r1,
                 pair<pair<int, int>, pair<int, int> > r2);
int main() {
  int n;
  scanf("%d", &n);
  find_rectangle(n, 0);
  found = true;
  find_rectangle(n, 1);
  printf("! ");
  for (int i = 0; i < 2; ++i)
    printf("%d %d %d %d%c", ans[i].first.first, ans[i].first.second,
           ans[i].second.first, ans[i].second.second, " \n"[i]);
  fflush(stdout);
}
void find_rectangle(int n, int i) {
  ans[i] = {{1, 1}, {n, n}};
  int l = 2, r = n;
  while (l <= r) {
    int mid = ans[i].first.first = (l + r) / 2;
    if (query(ans[i]))
      l = mid + 1;
    else
      r = mid - 1;
  }
  ans[i].first.first = l - 1;
  l = ans[i].first.first, r = n - 1;
  while (l <= r) {
    int mid = ans[i].second.first = (l + r) / 2;
    if (query(ans[i]))
      r = mid - 1;
    else
      l = mid + 1;
  }
  ans[i].second.first = r + 1;
  l = 2, r = n;
  while (l <= r) {
    int mid = ans[i].first.second = (l + r) / 2;
    if (query(ans[i]))
      l = mid + 1;
    else
      r = mid - 1;
  }
  ans[i].first.second = l - 1;
  l = ans[i].first.second, r = n - 1;
  while (l <= r) {
    int mid = ans[i].second.second = (l + r) / 2;
    if (query(ans[i]))
      r = mid - 1;
    else
      l = mid + 1;
  }
  ans[i].second.second = r + 1;
}
int query(pair<pair<int, int>, pair<int, int> > r) {
  int res = 0;
  printf("? %d %d %d %d\n", r.first.first, r.first.second, r.second.first,
         r.second.second);
  fflush(stdout);
  scanf("%d", &res);
  if (found and is_enclosed(ans[0], r)) --res;
  return res;
}
bool is_enclosed(pair<pair<int, int>, pair<int, int> > r1,
                 pair<pair<int, int>, pair<int, int> > r2) {
  return (r2.first.first <= r1.first.first and
          r2.first.second <= r1.first.second and
          r2.second.first >= r1.second.first and
          r2.second.second >= r1.second.second);
}
