#include <bits/stdc++.h>
using namespace std;
int left1, down1, right1, up1;
int left2, down2, right2, up2;
bool flag = false;
int print(int x1, int y1, int x2, int y2) {
  printf("? %d %d %d %d\n", x1, y1, x2, y2);
  fflush(stdout);
  int q;
  scanf("%d", &q);
  return q;
}
void findother(int x1, int y1, int x2, int y2) {
  if (print(x1, y1, x2, y2) == 0) {
    return;
  }
  left2 = x1, down2 = y1, right2 = x2, up2 = y2;
  int l = down2, r = up2;
  while (l <= r) {
    int mid = (l + r) >> 1;
    int res = print(left2, mid, right2, up2);
    if (res >= 1) {
      down2 = mid;
      l = mid + 1;
    } else
      r = mid - 1;
  }
  l = down2, r = up2;
  while (l <= r) {
    int mid = (l + r) >> 1;
    int res = print(left2, down2, right2, mid);
    if (res >= 1) {
      up2 = mid;
      r = mid - 1;
    } else
      l = mid + 1;
  }
  l = left2, r = right2;
  while (l <= r) {
    int mid = (l + r) >> 1;
    int res = print(mid, down2, right2, up2);
    if (res >= 1) {
      left2 = mid;
      l = mid + 1;
    } else
      r = mid - 1;
  }
  l = left2, r = right2;
  while (l <= r) {
    int mid = (l + r) >> 1;
    int res = print(left2, down2, mid, up2);
    if (res >= 1) {
      right2 = mid;
      r = mid - 1;
    } else
      l = mid + 1;
  }
  flag = true;
}
int main() {
  int n;
  cin >> n;
  left1 = 1, down1 = 1, right1 = n, up1 = n;
  int l = down1, r = up1;
  while (l <= r) {
    int mid = (l + r) >> 1;
    int res = print(left1, mid, right1, up1);
    if (res >= 1) {
      down1 = mid;
      l = mid + 1;
    } else
      r = mid - 1;
  }
  l = down1, r = up1;
  while (l <= r) {
    int mid = (l + r) >> 1;
    int res = print(left1, down1, right1, mid);
    if (res >= 1) {
      up1 = mid;
      r = mid - 1;
    } else
      l = mid + 1;
  }
  l = left1, r = right1;
  while (l <= r) {
    int mid = (l + r) >> 1;
    int res = print(mid, down1, right1, up1);
    if (res >= 1) {
      left1 = mid;
      l = mid + 1;
    } else
      r = mid - 1;
  }
  l = left1, r = right1;
  while (l <= r) {
    int mid = (l + r) >> 1;
    int res = print(left1, down1, mid, up1);
    if (res >= 1) {
      right1 = mid;
      r = mid - 1;
    } else
      l = mid + 1;
  }
  if (left1 > 1) findother(1, 1, left1 - 1, n);
  if (!flag && down1 > 1) findother(1, 1, n, down1 - 1);
  if (!flag && up1 < n) findother(1, up1 + 1, n, n);
  if (!flag && right1 < n) findother(right1 + 1, 1, n, n);
  printf("! %d %d %d %d %d %d %d %d\n", left1, down1, right1, up1, left2, down2,
         right2, up2);
  return 0;
}
