#include <bits/stdc++.h>
using namespace std;
const int mx = 1e3 + 10;
int du[mx][mx];
int main() {
  int n, v, last = 0;
  scanf("%d", &n);
  int u, d, l, r;
  l = u = 1e9, r = d = 0;
  for (int i = 1; i < n; i++) {
    printf("? %d %d %d %d\n", 1, i, n, i);
    fflush(stdout);
    scanf("%d", &v);
    v -= last;
    last = v;
    if (v & 1) {
      l = min(l, i);
      r = max(r, i + 1);
    }
  }
  last = 0;
  for (int i = 1; i < n; i++) {
    printf("? %d %d %d %d\n", i, 1, i, n);
    fflush(stdout);
    scanf("%d", &v);
    v -= last;
    last = v;
    if (v & 1) {
      u = min(u, i);
      d = max(d, i + 1);
    }
  }
  if (!r) {
    int L = 1, R = n;
    while (L < R) {
      int mid = (L + R) >> 1;
      printf("? %d %d %d %d\n", u, 1, u, mid);
      fflush(stdout);
      scanf("%d", &v);
      if (v & 1)
        R = mid;
      else
        L = mid + 1;
    }
    printf("! %d %d %d %d\n", u, L, d, L);
    fflush(stdout);
  } else if (!d) {
    int L = 1, R = n;
    while (L < R) {
      int mid = (L + R) >> 1;
      printf("? %d %d %d %d\n", 1, l, mid, l);
      fflush(stdout);
      scanf("%d", &v);
      if (v & 1)
        R = mid;
      else
        L = mid + 1;
    }
    printf("! %d %d %d %d\n", L, l, L, r);
    fflush(stdout);
  } else {
    printf("? %d %d %d %d\n", u, l, u, l);
    fflush(stdout);
    scanf("%d", &v);
    printf("! %d %d %d %d\n", u, v == 1 ? l : r, d, v == 1 ? r : l);
    fflush(stdout);
  }
  return 0;
}
