#include <bits/stdc++.h>
using namespace std;
long long n, low, high, chs;
long long x1up, x2up, x1down, x2down, y1down, y2down, y1up, y2up;
int query(long long x, long long y, long long xx, long long yy) {
  cout << "? " << x << " " << y << " " << xx << " " << yy << endl;
  cout << flush;
  int res;
  cin >> res;
  return res;
}
int query2(long long x, long long y, long long xx, long long yy) {
  int res = query(x, y, xx, yy);
  if (x <= x1down && y <= y1down && xx >= x1up && yy >= y1up) res--;
  return res;
}
int main() {
  cin >> n;
  low = 1;
  high = n;
  while (low < high) {
    chs = (low + high) / 2;
    int res = query(1, 1, n, chs);
    if (res == 0)
      low = chs + 1;
    else
      high = chs;
  }
  y1up = low;
  low = 1;
  high = n;
  while (low < high) {
    chs = (low + high) / 2;
    int res = query(1, 1, chs, y1up);
    if (res == 0)
      low = chs + 1;
    else
      high = chs;
  }
  x1up = low;
  low = 1;
  high = x1up;
  while (low <= high) {
    chs = (low + high) / 2;
    int res = query(chs, 1, x1up, y1up);
    if (res != 0) {
      low = chs + 1;
      x1down = chs;
    } else
      high = chs - 1;
  }
  low = 1;
  high = y1up;
  while (low <= high) {
    chs = (low + high) / 2;
    int res = query(x1down, chs, x1up, y1up);
    if (res != 0) {
      low = chs + 1;
      y1down = chs;
    } else
      high = chs - 1;
  }
  low = 1;
  high = n;
  while (low < high) {
    chs = (low + high) / 2;
    int res = query2(1, 1, n, chs);
    if (res == 0)
      low = chs + 1;
    else
      high = chs;
  }
  y2up = low;
  low = 1;
  high = n;
  while (low < high) {
    chs = (low + high) / 2;
    int res = query2(1, 1, chs, y2up);
    if (res == 0)
      low = chs + 1;
    else
      high = chs;
  }
  x2up = low;
  low = 1;
  high = x2up;
  while (low <= high) {
    chs = (low + high) / 2;
    int res = query2(chs, 1, x2up, y2up);
    if (res != 0) {
      low = chs + 1;
      x2down = chs;
    } else
      high = chs - 1;
  }
  low = 1;
  high = y2up;
  while (low <= high) {
    chs = (low + high) / 2;
    int res = query2(x2down, chs, x2up, y2up);
    if (res != 0) {
      low = chs + 1;
      y2down = chs;
    } else
      high = chs - 1;
  }
  cout << "! " << x1down << " " << y1down << " " << x1up << " " << y1up << " "
       << x2down << " " << y2down << " " << x2up << " " << y2up << endl;
  cout << flush;
}
