#include <bits/stdc++.h>
int x[5], y[5], n, l, r, mid, op;
int cal(int a, int b, int c, int d) {
  if (a <= x[0] && b <= y[0] && c >= x[1] && d >= y[1]) return 1;
  return 0;
}
int main() {
  scanf("%d", &n);
  x[0] = y[0] = x[2] = y[2] = 1;
  x[1] = y[1] = x[3] = y[3] = n;
  l = 0;
  r = n;
  while (l + 1 < r) {
    mid = (l + r) / 2;
    printf("? %d %d %d %d\n", x[0], y[0], x[1], mid);
    fflush(stdout);
    scanf("%d", &op);
    if (op == 0) {
      l = mid;
    } else {
      r = mid;
    }
  }
  y[1] = r;
  l = 1;
  r = y[1] + 1;
  while (l + 1 < r) {
    mid = (l + r) / 2;
    printf("? %d %d %d %d\n", x[0], mid, x[1], y[1]);
    fflush(stdout);
    scanf("%d", &op);
    if (op == 0) {
      r = mid;
    } else {
      l = mid;
    }
  }
  y[0] = l;
  l = 0;
  r = n;
  while (l + 1 < r) {
    mid = (l + r) / 2;
    printf("? %d %d %d %d\n", x[0], y[0], mid, y[1]);
    fflush(stdout);
    scanf("%d", &op);
    if (op == 0) {
      l = mid;
    } else {
      r = mid;
    }
  }
  x[1] = r;
  l = 1;
  r = x[1] + 1;
  while (l + 1 < r) {
    mid = (l + r) / 2;
    printf("? %d %d %d %d\n", mid, y[0], x[1], y[1]);
    fflush(stdout);
    scanf("%d", &op);
    if (op == 0) {
      r = mid;
    } else {
      l = mid;
    }
  }
  x[0] = l;
  l = 0;
  r = n;
  while (l + 1 < r) {
    mid = (l + r) / 2;
    printf("? %d %d %d %d\n", x[2], y[2], x[3], mid);
    fflush(stdout);
    scanf("%d", &op);
    op -= cal(x[2], y[2], x[3], mid);
    if (op == 0) {
      l = mid;
    } else {
      r = mid;
    }
  }
  y[3] = r;
  l = 1;
  r = y[3] + 1;
  while (l + 1 < r) {
    mid = (l + r) / 2;
    printf("? %d %d %d %d\n", x[2], mid, x[3], y[3]);
    fflush(stdout);
    scanf("%d", &op);
    op -= cal(x[2], mid, x[3], y[3]);
    if (op == 0) {
      r = mid;
    } else {
      l = mid;
    }
  }
  y[2] = l;
  l = 0;
  r = n;
  while (l + 1 < r) {
    mid = (l + r) / 2;
    printf("? %d %d %d %d\n", x[2], y[2], mid, y[3]);
    fflush(stdout);
    scanf("%d", &op);
    op -= cal(x[2], y[2], mid, y[3]);
    if (op == 0) {
      l = mid;
    } else {
      r = mid;
    }
  }
  x[3] = r;
  l = 1;
  r = x[3] + 1;
  while (l + 1 < r) {
    mid = (l + r) / 2;
    printf("? %d %d %d %d\n", mid, y[2], x[3], y[3]);
    fflush(stdout);
    scanf("%d", &op);
    op -= cal(mid, y[2], x[3], y[3]);
    if (op == 0) {
      r = mid;
    } else {
      l = mid;
    }
  }
  x[2] = l;
  printf("! %d %d %d %d %d %d %d %d\n", x[0], y[0], x[1], y[1], x[2], y[2],
         x[3], y[3]);
  return 0;
}
