#include <bits/stdc++.h>
using namespace std;
bool containsr(int x21, int y21, int x22, int y22, int x11, int y11, int x12,
               int y12) {
  return x21 >= x11 && y21 >= y11 && x22 <= x12 && y22 <= y12;
}
int main() {
  int n;
  cin >> n;
  int found = 0;
  int x11 = -1, y11 = -1, x12 = -1, y12 = -1;
  int bottom = 1;
  int left = 1;
  int top = n;
  int right = n;
  int l = bottom, r = top;
  while (true) {
    if (l > r) {
      top = l;
      break;
    }
    int m = (r + l) / 2;
    cout << "? " << left << " " << bottom << " " << right << " " << m << endl;
    fflush(stdout);
    int res;
    cin >> res;
    if (res >= 1) {
      r = m - 1;
    } else {
      l = m + 1;
    }
  }
  l = bottom, r = top;
  while (true) {
    if (l > r) {
      bottom = r;
      break;
    }
    int m = (r + l) / 2;
    cout << "? " << left << " " << m << " " << right << " " << top << endl;
    fflush(stdout);
    int res;
    cin >> res;
    if (res >= 1) {
      l = m + 1;
    } else {
      r = m - 1;
    }
  }
  l = left, r = right;
  while (true) {
    if (l > r) {
      right = l;
      break;
    }
    int m = (r + l) / 2;
    cout << "? " << left << " " << bottom << " " << m << " " << top << endl;
    fflush(stdout);
    int res;
    cin >> res;
    if (res >= 1) {
      r = m - 1;
    } else {
      l = m + 1;
    }
  }
  l = left, r = right;
  while (true) {
    if (l > r) {
      left = r;
      break;
    }
    int m = (r + l) / 2;
    cout << "? " << m << " " << bottom << " " << right << " " << top << endl;
    fflush(stdout);
    int res;
    cin >> res;
    if (res >= 1) {
      l = m + 1;
    } else {
      r = m - 1;
    }
  }
  x11 = left, y11 = bottom, x12 = right, y12 = top;
  int x21 = -1, y21 = -1, x22 = -1, y22 = -1;
  bottom = 1;
  left = 1;
  top = n;
  right = n;
  l = bottom, r = top;
  while (true) {
    if (l > r) {
      top = l;
      break;
    }
    int m = (r + l) / 2;
    cout << "? " << left << " " << bottom << " " << right << " " << m << endl;
    fflush(stdout);
    int res;
    cin >> res;
    if (containsr(x11, y11, x12, y12, left, bottom, right, m)) {
      res--;
    }
    if (res >= 1) {
      r = m - 1;
    } else {
      l = m + 1;
    }
  }
  l = bottom, r = top;
  while (true) {
    if (l > r) {
      bottom = r;
      break;
    }
    int m = (r + l) / 2;
    cout << "? " << left << " " << m << " " << right << " " << top << endl;
    fflush(stdout);
    int res;
    cin >> res;
    if (containsr(x11, y11, x12, y12, left, m, right, top)) {
      res--;
    }
    if (res >= 1) {
      l = m + 1;
    } else {
      r = m - 1;
    }
  }
  l = left, r = right;
  while (true) {
    if (l > r) {
      right = l;
      break;
    }
    int m = (r + l) / 2;
    cout << "? " << left << " " << bottom << " " << m << " " << top << endl;
    fflush(stdout);
    int res;
    cin >> res;
    if (containsr(x11, y11, x12, y12, left, bottom, m, top)) {
      res--;
    }
    if (res >= 1) {
      r = m - 1;
    } else {
      l = m + 1;
    }
  }
  l = left, r = right;
  while (true) {
    if (l > r) {
      left = r;
      break;
    }
    int m = (r + l) / 2;
    cout << "? " << m << " " << bottom << " " << right << " " << top << endl;
    fflush(stdout);
    int res;
    cin >> res;
    if (containsr(x11, y11, x12, y12, m, bottom, right, top)) {
      res--;
    }
    if (res >= 1) {
      l = m + 1;
    } else {
      r = m - 1;
    }
  }
  x21 = left, y21 = bottom, x22 = right, y22 = top;
  cout << "! " << x11 << " " << y11 << " " << x12 << " " << y12 << " " << x21
       << " " << y21 << " " << x22 << " " << y22 << endl;
}
