#include <bits/stdc++.h>
using namespace std;
mt19937 rnd(77);
int a;
int findy(int x) {
  int l = 0, r = a;
  for (; l + 1 != r;) {
    int md = (l + r) / 2;
    cout << "? " << x << " " << l + 1 << " " << x << " " << md << endl;
    int k;
    cin >> k;
    if (k % 2 == 0)
      l = md;
    else
      r = md;
  }
  return r;
}
int findx(int y) {
  int l = 0, r = a;
  for (; l + 1 != r;) {
    int md = (l + r) / 2;
    cout << "? " << l + 1 << " " << y << " " << md << " " << y << endl;
    int k;
    cin >> k;
    if (k % 2 == 0)
      l = md;
    else
      r = md;
  }
  return r;
}
int main() {
  cin.tie(0);
  cout.tie(0);
  cin.sync_with_stdio(0);
  cout.sync_with_stdio(0);
  ;
  cin >> a;
  vector<pair<int, int> > o;
  for (int q = 0; q < a - 1; q++) {
    cout << "? " << q + 1 << " " << 1 << " " << q + 1 << " " << a << endl;
    int k;
    cin >> k;
    if (k % 2 == 0) continue;
    o.push_back({q + 1, findy(q + 1)});
  }
  if (o.size() == 1) o.push_back({a, findy(a)});
  if (o.size() == 2) {
    cout << "! ";
    for (pair<int, int> p : o) cout << p.first << " " << p.second << " ";
    cout << endl;
    return 0;
  }
  for (int q = 0; q < a - 1; q++) {
    cout << "? " << 1 << " " << q + 1 << " " << a << " " << q + 1 << endl;
    int k;
    cin >> k;
    if (k % 2 == 0) continue;
    o.push_back({findx(q + 1), q + 1});
  }
  if (o.size() == 1) o.push_back({findx(a), a});
  cout << "! ";
  for (pair<int, int> p : o) cout << p.first << " " << p.second << " ";
  cout << endl;
}
