#include <bits/stdc++.h>
using namespace std;
const double EPS = 1e-9;
const long long INF = 1e17;
int n;
map<pair<pair<int, int>, pair<int, int> >, int> qs;
int query(int x1, int y1, int x2, int y2) {
  if (qs.count({{x1, y1}, {x2, y2}})) return qs[{{x1, y1}, {x2, y2}}];
  int ans;
  cout << "? " << x1 << " " << y1 << " " << x2 << " " << y2 << endl;
  cin >> ans;
  qs[{{x1, y1}, {x2, y2}}] = ans;
  return ans;
}
int bs(int x1, int y1, int x2, int y2, int ch, bool left) {
  int lx = 0, rx = n + 1;
  while (rx - lx > 1) {
    int m = (lx + rx) / 2;
    int ans = query(x1 == -1 ? m : x1, y1 == -1 ? m : y1, x2 == -1 ? m : x2,
                    y2 == -1 ? m : y2);
    if (ans > ch) {
      (left ? lx : rx) = m;
    } else {
      (left ? rx : lx) = m;
    }
  }
  return (left ? lx : rx);
}
void ans(int x[2][2], int y[2][2]) {
  cout << "! ";
  for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 2; j++) {
      cout << x[i][j] << " " << y[i][j] << " ";
    }
  }
  cout << endl;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(nullptr);
  cout.tie(nullptr);
  cin >> n;
  int x1, x2, x3, x4, x[2][2], y[2][2];
  x1 = bs(1, 1, -1, n, 0, 0);
  x2 = bs(1, 1, -1, n, 1, 0);
  x3 = bs(-1, 1, n, n, 0, 1);
  x4 = bs(-1, 1, n, n, 1, 1);
  if ((x1 < x3 && x3 <= x2) || (x1 < x4 && x4 < x2)) {
    x[0][0] = x4;
    x[0][1] = x1;
    x[1][0] = x3;
    x[1][1] = x2;
    y[0][0] = bs(x[0][0], -1, x[0][1], n, 0, 1);
    y[0][1] = bs(x[0][0], 1, x[0][1], -1, 0, 0);
    y[1][0] = bs(x[1][0], -1, x[1][1], n, 0, 1);
    y[1][1] = bs(x[1][0], 1, x[1][1], -1, 0, 0);
    ans(x, y);
  } else {
    y[0][0] = bs(1, -1, n, n, 1, 1);
    y[0][1] = bs(1, 1, n, -1, 0, 0);
    y[1][0] = bs(1, -1, n, n, 0, 1);
    y[1][1] = bs(1, 1, n, -1, 1, 0);
    x[0][0] = bs(-1, y[0][0], n, y[0][1], 0, 1);
    x[0][1] = bs(1, y[0][0], -1, y[0][1], 0, 0);
    x[1][0] = bs(-1, y[1][0], n, y[1][1], 0, 1);
    x[1][1] = bs(1, y[1][0], -1, y[1][1], 0, 0);
    ans(x, y);
  }
  return 0;
}
