#include <bits/stdc++.h>
using namespace std;
namespace D {
int quest(int x1, int y1, int x2, int y2) {
  cout << "? " << x1 << ' ' << y1 << ' ' << x2 << ' ' << y2 << "\n" << flush;
  int ans;
  cin >> ans;
  return ans;
}
void find_rect(int& xl, int& xr, int& yl, int& yr) {
  int l, r;
  l = xl, r = xr;
  while (l != r) {
    int mid = (l + r + 1) / 2;
    if (quest(mid, yl, xr, yr))
      l = mid;
    else
      r = mid - 1;
  }
  xl = l;
  l = xl, r = xr;
  while (l != r) {
    int mid = (l + r) / 2;
    if (quest(xl, yl, mid, yr))
      r = mid;
    else
      l = mid + 1;
  }
  xr = r;
  l = yl, r = yr;
  while (l != r) {
    int mid = (l + r + 1) / 2;
    if (quest(xl, mid, xr, yr))
      l = mid;
    else
      r = mid - 1;
  }
  yl = l;
  l = yl, r = yr;
  while (l != r) {
    int mid = (l + r) / 2;
    if (quest(xl, yl, xr, mid))
      r = mid;
    else
      l = mid + 1;
  }
  yr = r;
}
void solve() {
  int n;
  cin >> n;
  int x11, y11, x12, y12;
  x11 = y11 = 1;
  x12 = y12 = n;
  find_rect(x11, x12, y11, y12);
  int x21, y21, x22, y22;
  x21 = y21 = 1;
  x22 = y22 = n;
  if (x11 < n && quest(x11 + 1, 1, n, n))
    x21 = x11 + 1;
  else if (y11 < n && quest(1, y11 + 1, n, n))
    y21 = y11 + 1;
  else if (1 < x12 && quest(1, 1, x12 - 1, n))
    x22 = x12 - 1;
  else if (1 < y12 && quest(1, 1, n, y12 - 1))
    y22 = y12 - 1;
  find_rect(x21, x22, y21, y22);
  cout << "! " << x11 << ' ' << y11 << ' ' << x12 << ' ' << y12 << ' ' << x21
       << ' ' << y21 << ' ' << x22 << ' ' << y22 << '\n';
  cout.flush();
}
}  // namespace D
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  D::solve();
  return 0;
}
