#include <bits/stdc++.h>
using namespace std;
pair<pair<int, int>, pair<int, int> > getRectangle(int minx, int miny, int maxx,
                                                   int maxy) {
  int l, r;
  int resp;
  l = minx, r = maxx;
  while (l <= r) {
    int mid = (l + r) / 2;
    printf("? %d %d %d %d\n", mid, miny, maxx, maxy);
    fflush(stdout);
    scanf(" %d", &resp);
    if (resp == 1) {
      minx = mid;
      l = mid + 1;
    } else
      r = mid - 1;
  }
  l = minx, r = maxx;
  while (l <= r) {
    int mid = (l + r) / 2;
    printf("? %d %d %d %d\n", minx, miny, mid, maxy);
    fflush(stdout);
    scanf(" %d", &resp);
    if (resp == 1) {
      maxx = mid;
      r = mid - 1;
    } else
      l = mid + 1;
  }
  l = miny, r = maxy;
  while (l <= r) {
    int mid = (l + r) / 2;
    printf("? %d %d %d %d\n", minx, mid, maxx, maxy);
    fflush(stdout);
    scanf(" %d", &resp);
    if (resp == 1) {
      miny = mid;
      l = mid + 1;
    } else
      r = mid - 1;
  }
  l = miny, r = maxy;
  while (l <= r) {
    int mid = (l + r) / 2;
    printf("? %d %d %d %d\n", minx, miny, maxx, mid);
    fflush(stdout);
    scanf(" %d", &resp);
    if (resp == 1) {
      maxy = mid;
      r = mid - 1;
    } else
      l = mid + 1;
  }
  return pair<pair<int, int>, pair<int, int> >(pair<int, int>(minx, miny),
                                               pair<int, int>(maxx, maxy));
}
int main() {
  int resp;
  int n;
  scanf(" %d", &n);
  int sep = -1;
  int l = 1, r = n;
  while (l <= r) {
    int mid = (l + r) / 2;
    printf("? %d %d %d %d\n", 1, 1, mid, n);
    fflush(stdout);
    scanf(" %d", &resp);
    if (resp == 1) {
      sep = mid;
      r = mid - 1;
    } else if (resp == 0)
      l = mid + 1;
    else
      r = mid - 1;
  }
  int resp1 = -1, resp2 = -1;
  if (sep != -1) {
    printf("? %d %d %d %d\n", 1, 1, sep, n);
    fflush(stdout);
    scanf(" %d", &resp1);
    printf("? %d %d %d %d\n", sep + 1, 1, n, n);
    fflush(stdout);
    scanf(" %d", &resp2);
  }
  pair<pair<int, int>, pair<int, int> > ans1, ans2;
  if (resp1 == 1 && resp2 == 1) {
    ans1 = getRectangle(1, 1, sep, n);
    ans2 = getRectangle(sep + 1, 1, n, n);
  } else {
    sep = -1;
    l = 1, r = n;
    while (l <= r) {
      int mid = (l + r) / 2;
      printf("? %d %d %d %d\n", 1, 1, n, mid);
      fflush(stdout);
      scanf(" %d", &resp);
      if (resp == 1) {
        sep = mid;
        r = mid - 1;
      } else if (resp == 0)
        l = mid + 1;
      else
        r = mid - 1;
    }
    ans1 = getRectangle(1, 1, n, sep);
    ans2 = getRectangle(1, sep + 1, n, n);
  }
  printf("!");
  printf(" %d %d %d %d", ans1.first.first, ans1.first.second, ans1.second.first,
         ans1.second.second);
  printf(" %d %d %d %d\n", ans2.first.first, ans2.first.second,
         ans2.second.first, ans2.second.second);
  fflush(stdout);
  return 0;
}
