#include <bits/stdc++.h>
using namespace std;
int a[4], b[4], n;
int query(int a[]) {
  int ret;
  cout << "? " << a[0] << " " << a[1] << " " << a[2] << " " << a[3];
  printf("\n");
  fflush(stdout);
  scanf("%d", &ret);
  return ret;
}
void fix(int a[], int k) {
  int left = a[0], right = a[2];
  if (k & 1) left = a[1], right = a[3];
  while (left <= right) {
    int mid = (left + right) >> 1, tmp[4];
    for (int i = 0; i < 4; i++) tmp[i] = a[i];
    tmp[k] = mid;
    if (query(tmp)) {
      if (k > 1)
        right = mid - 1;
      else
        left = mid + 1;
    } else {
      if (k > 1)
        left = mid + 1;
      else
        right = mid - 1;
    }
  }
  if (k > 1)
    a[k] = left;
  else
    a[k] = right;
}
void get1(int a[]) {
  fix(a, 3);
  fix(a, 2);
  fix(a, 0);
  fix(a, 1);
}
void get2(int a[]) {
  fix(a, 1);
  fix(a, 0);
  fix(a, 2);
  fix(a, 3);
}
int main() {
  cin >> n;
  a[0] = 1;
  a[1] = 1;
  a[2] = n;
  a[3] = n;
  memcpy(b, a, sizeof(a));
  get1(a);
  get2(b);
  cout << "! ";
  for (int i = 0; i < 4; i++) cout << a[i] << " ";
  for (int i = 0; i < 4; i++) cout << b[i] << " ";
  printf("\n");
  fflush(stdout);
  return 0;
}
