#include <bits/stdc++.h>
using namespace std;
int cnt = 0;
int f(int X1, int Y1, int X2, int Y2) {
  assert(cnt++ < 200);
  cout << '?';
  for (int a : {X1, Y1, X2, Y2}) cout << ' ' << a;
  cout << endl;
  int res;
  cin >> res;
  return res;
}
vector<int> solve(int L, int U, int R, int B) {
  int lb = L, ub = R + 1, m;
  while (ub - lb > 1) {
    m = (lb + ub) / 2;
    (f(m, U, R, B) >= 1 ? lb : ub) = m;
  }
  L = lb;
  lb = L - 1, ub = R;
  while (ub - lb > 1) {
    m = (lb + ub) / 2;
    (f(L, U, m, B) >= 1 ? ub : lb) = m;
  }
  R = ub;
  lb = U, ub = B + 1;
  while (ub - lb > 1) {
    m = (lb + ub) / 2;
    (f(L, m, R, B) >= 1 ? lb : ub) = m;
  }
  U = lb;
  lb = U - 1, ub = B;
  while (ub - lb > 1) {
    m = (lb + ub) / 2;
    (f(L, U, R, m) >= 1 ? ub : lb) = m;
  }
  B = ub;
  return vector<int>{L, U, R, B};
}
int main() {
  int n;
  cin >> n;
  vector<int> u = solve(1, 1, n, n);
  vector<int> v;
  if (u[0] > 1 && f(1, 1, u[0] - 1, n) > 0) {
    v = solve(1, 1, u[0] - 1, n);
  } else if (u[1] > 1 && f(1, 1, n, u[1] - 1) > 0) {
    v = solve(1, 1, n, u[1] - 1);
  } else if (u[2] < n && f(u[2] + 1, 1, n, n) > 0) {
    v = solve(u[2] + 1, 1, n, n);
  } else if (u[3] < n && f(1, u[3] + 1, n, n) > 0) {
    v = solve(1, u[3] + 1, n, n);
  } else {
    assert(0);
  }
  cout << '!';
  for (auto &(a) : (u)) cout << ' ' << a;
  for (auto &(a) : (v)) cout << ' ' << a;
  cout << endl;
}
