#include <bits/stdc++.h>
using namespace std;
const int N = (int)1e5 + 123;
const long long INF = (long long)1e18 + 123;
const int inf = (int)1e9 + 123;
struct point {
  int x, y;
} A, B, A1, B1;
int n, cnt, l, r;
int main() {
  cin >> n;
  A = {1, 1};
  B = {n, n};
  l = 1, r = n;
  while (r - l > 1) {
    int mid = (l + r) >> 1;
    cout << "? " << A.x << " " << A.y << " " << B.x << " " << mid << endl;
    fflush(stdout);
    cin >> cnt;
    if (cnt > 0)
      r = mid;
    else
      l = mid;
  }
  cout << "? " << A.x << " " << A.y << " " << B.x << " " << l << endl;
  fflush(stdout);
  cin >> cnt;
  if (cnt > 0) r = l;
  B.y = r;
  l = 1, r = B.y;
  while (r - l > 1) {
    int mid = (l + r) >> 1;
    cout << "? " << A.x << " " << mid << " " << B.x << " " << B.y << endl;
    fflush(stdout);
    cin >> cnt;
    if (cnt > 0)
      l = mid;
    else
      r = mid;
  }
  cout << "? " << A.x << " " << r << " " << B.x << " " << B.y << endl;
  fflush(stdout);
  cin >> cnt;
  if (cnt > 0) l = r;
  A.y = l;
  l = 1, r = n;
  while (r - l > 1) {
    int mid = (l + r) >> 1;
    cout << "? " << A.x << " " << A.y << " " << mid << " " << B.y << endl;
    fflush(stdout);
    cin >> cnt;
    if (cnt > 0)
      r = mid;
    else
      l = mid;
  }
  cout << "? " << A.x << " " << A.y << " " << l << " " << B.y << endl;
  fflush(stdout);
  cin >> cnt;
  if (cnt > 0) r = l;
  B.x = r;
  l = 1, r = B.x;
  while (r - l > 1) {
    int mid = (l + r) >> 1;
    cout << "? " << mid << " " << A.y << " " << B.x << " " << B.y << endl;
    fflush(stdout);
    cin >> cnt;
    if (cnt > 0)
      l = mid;
    else
      r = mid;
  }
  cout << "? " << r << " " << A.y << " " << B.x << " " << B.y << endl;
  fflush(stdout);
  cin >> cnt;
  if (cnt > 0) l = r;
  A.x = l;
  A1.x = B.x + 1;
  A1.y = 1;
  B1 = {n, n};
  if (A1.x > n) A1 = {0, 0}, B1 = {0, 0};
  if (A1.x > 0) {
    cout << "? " << A1.x << " " << A1.y << " " << B1.x << " " << B1.y << endl;
    fflush(stdout);
    cin >> cnt;
    if (cnt == 0) A1 = {0, 0}, B1 = {0, 0};
  }
  if (A1.x == 0) {
    A1 = {1, 1};
    B1.x = A.x - 1;
    B1.y = n;
    if (B1.x <= 0) A1 = {0, 0}, B1 = {0, 0};
    if (A1.x > 0) {
      cout << "? " << A1.x << " " << A1.y << " " << B1.x << " " << B1.y << endl;
      fflush(stdout);
      cin >> cnt;
      if (cnt == 0) A1 = {0, 0}, B1 = {0, 0};
    }
  }
  if (A1.x == 0) {
    A1.x = 1;
    A1.y = B.y + 1;
    B1 = {n, n};
    if (A1.y > n) A1 = {0, 0}, B1 = {0, 0};
    if (A1.x > 0) {
      cout << "? " << A1.x << " " << A1.y << " " << B1.x << " " << B1.y << endl;
      fflush(stdout);
      cin >> cnt;
      if (cnt == 0) A1 = {0, 0}, B1 = {0, 0};
    }
  }
  if (A1.x == 0) {
    A1 = {1, 1};
    B1.x = n;
    B1.y = A.y - 1;
    if (B1.y <= 0) A1 = {0, 0}, B1 = {0, 0};
    if (A1.x > 0) {
      cout << "? " << A1.x << " " << A1.y << " " << B1.x << " " << B1.y << endl;
      fflush(stdout);
      cin >> cnt;
      if (cnt == 0) A1 = {0, 0}, B1 = {0, 0};
    }
  }
  l = A1.y, r = B1.y;
  while (r - l > 1) {
    int mid = (l + r) >> 1;
    cout << "? " << A1.x << " " << A1.y << " " << B1.x << " " << mid << endl;
    fflush(stdout);
    cin >> cnt;
    if (cnt > 0)
      r = mid;
    else
      l = mid;
  }
  cout << "? " << A1.x << " " << A1.y << " " << B1.x << " " << l << endl;
  fflush(stdout);
  cin >> cnt;
  if (cnt > 0) r = l;
  B1.y = r;
  l = A1.y, r = B1.y;
  while (r - l > 1) {
    int mid = (l + r) >> 1;
    cout << "? " << A1.x << " " << mid << " " << B1.x << " " << B1.y << endl;
    fflush(stdout);
    cin >> cnt;
    if (cnt > 0)
      l = mid;
    else
      r = mid;
  }
  cout << "? " << A1.x << " " << r << " " << B1.x << " " << B1.y << endl;
  fflush(stdout);
  cin >> cnt;
  if (cnt > 0) l = r;
  A1.y = l;
  l = A1.x, r = B1.x;
  while (r - l > 1) {
    int mid = (l + r) >> 1;
    cout << "? " << A1.x << " " << A1.y << " " << mid << " " << B1.y << endl;
    fflush(stdout);
    cin >> cnt;
    if (cnt > 0)
      r = mid;
    else
      l = mid;
  }
  cout << "? " << A1.x << " " << A1.y << " " << l << " " << B1.y << endl;
  fflush(stdout);
  cin >> cnt;
  if (cnt > 0) r = l;
  B1.x = r;
  l = A1.x, r = B1.x;
  while (r - l > 1) {
    int mid = (l + r) >> 1;
    cout << "? " << mid << " " << A1.y << " " << B1.x << " " << B1.y << endl;
    fflush(stdout);
    cin >> cnt;
    if (cnt > 0)
      l = mid;
    else
      r = mid;
  }
  cout << "? " << r << " " << A1.y << " " << B1.x << " " << B1.y << endl;
  fflush(stdout);
  cin >> cnt;
  if (cnt > 0) l = r;
  A1.x = l;
  cout << "! " << A.x << " " << A.y << " " << B.x << " " << B.y << " " << A1.x
       << " " << A1.y << " " << B1.x << " " << B1.y << endl;
  fflush(stdout);
  return 0;
}
