#include <bits/stdc++.h>
using namespace std;
void guan() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
}
const int maxn = 1234567;
const int mod = 1e9 + 7;
const long long MAXX = (1ll << 62) - 1 + (1ll << 62);
int cnt = 0;
long long Q(int x1, int y1, int x2, int y2) {
  if (cnt >= 2019)
    while (1)
      ;
  cout << "? " << x1 << " " << y1 << " " << x2 << " " << y2 << endl;
  ++cnt;
  cout.flush();
  cin >> x1;
  return x1;
}
int a[maxn];
void solve(int n) {
  for (int i = 1; i <= n; i++) a[i] = i;
  random_shuffle(a + 1, a + 1 + n);
  int r1 = -1, r2 = -1;
  for (int i = 1; i <= n; i++) {
    if (Q(a[i], 1, a[i], n) & 1) {
      if (r1 == -1)
        r1 = a[i];
      else
        r2 = a[i];
    }
    if (r1 != -1 && r2 != -1) break;
  }
  if (r1 != -1 && r2 != -1) {
    int l = 1, r = n;
    int ans1, ans2;
    while (l < r) {
      int mid = l + r >> 1;
      if (Q(r1, l, r1, mid) & 1)
        r = mid;
      else
        l = mid + 1;
    }
    ans1 = r;
    l = 1, r = n;
    while (l < r) {
      int mid = l + r >> 1;
      if (Q(r2, l, r2, mid) & 1)
        r = mid;
      else
        l = mid + 1;
    }
    ans2 = r;
    cout << "! " << r1 << " " << ans1 << " " << r2 << " " << ans2 << endl;
    return;
  }
  random_shuffle(a + 1, a + 1 + n);
  int c1 = -1, c2 = -1;
  for (int i = 1; i <= n; i++) {
    if (Q(1, a[i], n, a[i]) & 1) {
      if (c1 == -1)
        c1 = a[i];
      else
        c2 = a[i];
    }
    if (c1 != -1 && c2 != -1) break;
  }
  int l = 1, r = n;
  int ans1, ans2;
  while (l < r) {
    int mid = l + r >> 1;
    if (Q(l, c1, mid, c1) & 1)
      r = mid;
    else
      l = mid + 1;
  }
  ans1 = r;
  l = 1, r = n;
  while (l < r) {
    int mid = l + r >> 1;
    if (Q(l, c2, mid, c2) & 1)
      r = mid;
    else
      l = mid + 1;
  }
  ans2 = r;
  cout << "! " << ans1 << " " << c1 << " " << ans2 << " " << c2 << endl;
}
int main() {
  guan();
  int T = 1;
  int n, k, m;
  long long a, b;
  while (cin >> n) {
    solve(n);
  }
  return 0;
}
