#include <bits/stdc++.h>
using namespace std;
int n, s[2][4], num;
int get(int lx, int ly, int rx, int ry) {
  int num;
  if (lx > n || ly > n || rx > n || ry > n) return 0;
  cout << "? " << lx << " " << ly << " " << rx << " " << ry << endl;
  fflush(stdout);
  cin >> num;
  return num;
}
void ask(int lx, int ly, int rx, int ry) {
  int l = lx, r = rx, ans;
  while (l <= r) {
    int mid = (l + r) >> 1;
    if (get(mid, ly, rx, ry))
      l = mid + 1, ans = mid;
    else
      r = mid - 1;
  }
  s[num][0] = ans;
  l = ly, r = ry, ans;
  while (l <= r) {
    int mid = (l + r) >> 1;
    if (get(lx, mid, rx, ry))
      l = mid + 1, ans = mid;
    else
      r = mid - 1;
  }
  s[num][1] = ans;
  l = lx, r = rx, ans;
  while (l <= r) {
    int mid = (l + r) >> 1;
    if (!get(lx, ly, mid, ry))
      l = mid + 1;
    else
      r = mid - 1, ans = mid;
  }
  s[num][2] = ans;
  l = ly, r = ry, ans;
  while (l <= r) {
    int mid = (l + r) >> 1;
    if (!get(lx, ly, rx, mid))
      l = mid + 1;
    else
      r = mid - 1, ans = mid;
  }
  s[num][3] = ans;
  ++num;
}
void solve() {
  int l = 1, r = n, ans;
  while (l <= r) {
    int mid = (l + r) >> 1;
    if (!get(1, 1, n, mid))
      l = mid + 1;
    else
      r = mid - 1, ans = mid;
  }
  if (get(1, 1, n, ans) && get(1, ans + 1, n, n)) {
    ask(1, 1, n, l), ask(1, ans + 1, n, n);
    return;
  }
  l = 1, r = n, ans;
  while (l <= r) {
    int mid = (l + r) >> 1;
    if (!get(1, 1, mid, n))
      l = mid + 1;
    else
      r = mid - 1, ans = mid;
  }
  ask(1, 1, ans, n), ask(ans + 1, 1, n, n);
}
int main() {
  cin >> n;
  solve();
  cout << "!";
  for (int i = 0; i < 2; i++)
    for (int j = 0; j < 4; j++) cout << " " << s[i][j];
  fflush(stdout);
}
