#include <bits/stdc++.h>
#pragma GCC optimize("Ofast", "unroll-loops")
using namespace std;
int n, tmp, top;
pair<int, int> ans[2];
int main() {
  cin >> n;
  for (int i = 1; i <= n && top != 2; i++) {
    cout << "? " << 1 << ' ' << i << ' ' << n << ' ' << i << endl, cin >> tmp;
    if (tmp & 1) {
      int l = 1, r = n, m;
      while (l != r) {
        m = l + r >> 1;
        cout << "? " << l << ' ' << i << ' ' << m << ' ' << i << endl;
        cin >> tmp;
        if (tmp & 1)
          r = m;
        else
          l = m + 1;
      }
      ans[top++] = make_pair(l, i);
    }
  }
  if (top == 2) {
    cout << "! " << ans[0].first << ' ' << ans[0].second << ' ' << ans[1].first
         << ' ' << ans[1].second << endl;
    return 0;
  }
  for (int i = 1; i <= n && top != 2; i++) {
    if (i == n && top == 1)
      tmp = 1;
    else
      cout << "? " << i << ' ' << 1 << ' ' << i << ' ' << n << endl, cin >> tmp;
    if (tmp & 1) {
      int l = 1, r = n, m;
      while (l != r) {
        m = l + r >> 1;
        cout << "? " << i << ' ' << l << ' ' << i << ' ' << m << endl;
        cin >> tmp;
        if (tmp & 1)
          r = m;
        else
          l = m + 1;
      }
      ans[top++] = make_pair(i, l);
    }
  }
  cout << "! " << ans[0].first << ' ' << ans[0].second << ' ' << ans[1].first
       << ' ' << ans[1].second << endl;
}
