#include <bits/stdc++.h>
using namespace std;
vector<int> total_answer;
int n;
int x1Found = -1, y1Found = -1, x2Found = -1, y2Found = -1;
int ask_system(int x1, int y1, int x2, int y2) {
  cout << "? " << x1 << ' ' << y1 << ' ' << x2 << ' ' << y2 << endl;
  int system_answer;
  cin >> system_answer;
  return system_answer;
}
bool valid(int coord) {
  if (coord < 1 || coord > n)
    return false;
  else
    return true;
}
bool exist(int x1, int y1, int x2, int y2) {
  if (!valid(x1) || !valid(y1) || !valid(x2) || !valid(y2)) return false;
  if (x1 > x2) return false;
  if (y1 > y2) return false;
  int res = ask_system(x1, y1, x2, y2);
  if (x1 <= x1Found && x2Found <= x2 && y1 <= y1Found && y2Found <= y2) res--;
  if (res > 0)
    return true;
  else
    return false;
}
int find_line(int left_lineFixed, int down_lineFixed, int right_lineFixed,
              int up_lineFixed, int number) {
  int l = 0, r = n + 1;
  while (r - l > 1) {
    int m = (l + r) >> 1;
    bool result;
    if (number == 0)
      result = exist(m, down_lineFixed, right_lineFixed, up_lineFixed);
    else if (number == 1)
      result = exist(left_lineFixed, m, right_lineFixed, up_lineFixed);
    else if (number == 2)
      result = exist(left_lineFixed, down_lineFixed, m, up_lineFixed);
    else
      result = exist(left_lineFixed, down_lineFixed, right_lineFixed, m);
    if (number < 2) {
      if (result)
        l = m;
      else
        r = m;
    } else {
      if (result)
        r = m;
      else
        l = m;
    }
  }
  if (number < 2)
    return l;
  else
    return r;
}
void proceed(int &left_line, int &down_line, int &right_line, int &up_line) {
  left_line = find_line(left_line, down_line, right_line, up_line, 0);
  down_line = find_line(left_line, down_line, right_line, up_line, 1);
  right_line = find_line(left_line, down_line, right_line, up_line, 2);
  up_line = find_line(left_line, down_line, right_line, up_line, 3);
  total_answer.push_back(left_line), total_answer.push_back(down_line);
  total_answer.push_back(right_line), total_answer.push_back(up_line);
}
int main() {
  ios::sync_with_stdio(NULL);
  cin.tie(NULL);
  cin >> n;
  int left_line = 1, down_line = 1, right_line = n, up_line = n;
  proceed(left_line, down_line, right_line, up_line);
  x1Found = left_line, y1Found = down_line;
  x2Found = right_line, y2Found = up_line;
  left_line = 1, down_line = 1, right_line = n, up_line = n;
  proceed(left_line, down_line, right_line, up_line);
  cout << "! ";
  for (int to : total_answer) cout << to << ' ';
  return 0;
}
