#include <bits/stdc++.h>
using namespace std;
int question(int i1, int j1, int i2, int j2) {
  cout << "? " << i1 << " " << j1 << " " << i2 << " " << j2 << endl;
  cout.flush();
  int x;
  cin >> x;
  if (x == -1) exit(0);
  return x;
}
int questionodd(int i1, int j1, int i2, int j2) {
  return question(i1, j1, i2, j2) % 2;
}
void writesol(pair<int, int> p1, pair<int, int> p2) {
  cout << "! " << p1.first << " " << p1.second << " " << p2.first << " "
       << p2.second << endl;
  exit(0);
}
int n;
pair<int, int> findcol(int j) {
  int inf = 1;
  int sup = n;
  while (inf < sup) {
    int med = (inf + sup) / 2;
    if (questionodd(inf, j, med, j))
      sup = med;
    else
      inf = med + 1;
  }
  return pair<int, int>(inf, j);
}
pair<int, int> findrow(int i) {
  int inf = 1;
  int sup = n;
  while (inf < sup) {
    int med = (inf + sup) / 2;
    if (questionodd(i, inf, i, med))
      sup = med;
    else
      inf = med + 1;
  }
  return pair<int, int>(i, inf);
}
int main() {
  cin >> n;
  for (int j = 1; j < n; j++) {
    if (questionodd(1, 1, n, j)) {
      pair<int, int> p1 = findcol(j);
      for (int j = n; j > 1; j--) {
        if (questionodd(1, j, n, n)) {
          pair<int, int> p2 = findcol(j);
          writesol(p1, p2);
        }
      }
    }
  }
  for (int i = 1; i < n; i++) {
    if (questionodd(1, 1, i, n)) {
      pair<int, int> p1 = findrow(i);
      for (int i = n; i > 1; i--) {
        if (questionodd(i, 1, n, n)) {
          pair<int, int> p2 = findrow(i);
          writesol(p1, p2);
        }
      }
    }
  }
}
