#include <bits/stdc++.h>
int query(int x1, int y1, int x2, int y2) {
  int cnt;
  printf("? %d %d %d %d\n", x1, y1, x2, y2);
  fflush(stdout);
  scanf("%d", &cnt);
  return cnt;
}
int rx1, ry1, rx2, ry2, n;
int r1x1, r1y1, r1x2, r1y2, r2x1, r2y1, r2x2, r2y2;
void solve(int x1, int y1, int x2, int y2, int dx1, int dy1, int dx2, int dy2,
           int cnt, int change) {
  int lower, upper, mid;
  if (!dx1) {
    lower = 1, upper = x2 + 1;
    while (upper - lower > 1) {
      mid = (lower + upper) / 2;
      if (query(mid, y1, x2, y2) >= cnt)
        lower = mid;
      else
        upper = mid;
    }
    if (change)
      x1 = lower;
    else
      rx1 = lower;
  }
  if (!dx2) {
    lower = x1 - 1, upper = n;
    while (upper - lower > 1) {
      mid = (lower + upper) / 2;
      if (query(x1, y1, mid, y2) < cnt)
        lower = mid;
      else
        upper = mid;
    }
    if (change)
      x2 = upper;
    else
      rx2 = upper;
  }
  if (!dy1) {
    lower = 1, upper = y2 + 1;
    while (upper - lower > 1) {
      mid = (lower + upper) / 2;
      if (query(x1, mid, x2, y2) >= cnt)
        lower = mid;
      else
        upper = mid;
    }
    if (change)
      y1 = lower;
    else
      ry1 = lower;
  }
  if (!dy2) {
    lower = y1 - 1, upper = n;
    while (upper - lower > 1) {
      mid = (lower + upper) / 2;
      if (query(x1, y1, x2, mid) < cnt)
        lower = mid;
      else
        upper = mid;
    }
    if (change)
      y2 = upper;
    else
      ry2 = upper;
  }
  if (change) {
    if (r1x1 == 0 || (r1x1 == x1 && r1y1 == y1 && r1x2 == x2 && r1y2 == y2))
      r1x1 = x1, r1y1 = y1, r1x2 = x2, r1y2 = y2;
    else
      r2x1 = x1, r2y1 = y1, r2x2 = x2, r2y2 = y2;
  }
}
int main() {
  int x1, y1, x2, y2;
  scanf("%d", &n);
  solve(1, 1, n, n, 0, 0, 0, 0, 1, 0);
  x1 = rx1, y1 = ry1, x2 = rx2, y2 = ry2;
  solve(x1, 1, n, n, 1, 0, 0, 0, 1, 1);
  if (r1x2 != x2)
    solve(1, 1, x2, n, 0, 0, 1, 0, 1, 1);
  else {
    if (r1y1 != y1)
      solve(1, y1, n, n, 0, 1, 0, 0, 1, 1);
    else
      solve(1, 1, n, y2, 0, 0, 0, 1, 1, 1);
  }
  printf("! %d %d %d %d %d %d %d %d\n", r1x1, r1y1, r1x2, r1y2, r2x1, r2y1,
         r2x2, r2y2);
  fflush(stdout);
  return 0;
}
