#include <bits/stdc++.h>
using namespace std;
long long query(long long x1, long long y1, long long x2, long long y2) {
  cout << "? " << x1 << ' ' << y1 << ' ' << x2 << ' ' << y2 << endl;
  long long res;
  cin >> res;
  return res;
}
vector<long long> shrink(long long x1, long long y1, long long x2,
                         long long y2) {
  for (long long i = 16; i >= 0; i--)
    if (x1 + (1 << i) <= x2)
      if (query(x1 + (1 << i), y1, x2, y2) == 1) x1 += (1 << i);
  for (long long i = 16; i >= 0; i--)
    if (x2 - (1 << i) >= x1)
      if (query(x1, y1, x2 - (1 << i), y2) == 1) x2 -= (1 << i);
  for (long long i = 16; i >= 0; i--)
    if (y1 + (1 << i) <= y2)
      if (query(x1, y1 + (1 << i), x2, y2) == 1) y1 += (1 << i);
  for (long long i = 16; i >= 0; i--)
    if (y2 - (1 << i) >= y1)
      if (query(x1, y1, x2, y2 - (1 << i)) == 1) y2 -= (1 << i);
  return {x1, y1, x2, y2};
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  long long n;
  cin >> n;
  long long x = 1;
  vector<long long> r1, r2;
  for (long long i = 16; i >= 0; i--)
    if (x + (1 << i) <= n && query(x + (1 << i), 1, n, n) != 0) x += (1 << i);
  if (x - 1 >= 1 && query(1, 1, x - 1, n) == 1 && query(x, 1, n, n) == 1) {
    r1 = shrink(1, 1, x - 1, n);
    r2 = shrink(x, 1, n, n);
  } else {
    long long y = 1;
    for (long long i = 16; i >= 0; i--)
      if (y + (1 << i) <= n && query(1, y + (1 << i), n, n) != 0) y += (1 << i);
    r1 = shrink(1, 1, n, y - 1);
    r2 = shrink(1, y, n, n);
  }
  cout << "! ";
  for (long long i = 0; i < 4; i++) cout << r1[i] << ' ';
  for (long long i = 0; i < 4; i++) cout << r2[i] << ' ';
  cout << endl;
}
