#include <bits/stdc++.h>
using namespace std;
int a[4], b[4];
int get(int *a) {
  int ans;
  cout << "? " << a[0] << " " << a[1] << " " << a[2] << " " << a[3] << endl;
  cin >> ans;
  return ans;
}
int get1(int a, int b, int c, int d) {
  int ans;
  cout << "? " << a << " " << b << " " << c << " " << d << endl;
  cin >> ans;
  return ans;
}
void solve(int *a) {
  int l = a[0], r = a[2], mid;
  while (l < r) {
    mid = (l + r) / 2;
    a[2] = mid;
    if (get(a)) {
      r = mid;
    } else {
      l = mid + 1;
    }
  }
  a[2] = r;
  l = a[0], r = a[2];
  while (l < r) {
    mid = (l + r) / 2;
    a[0] = mid + 1;
    if (get(a)) {
      l = mid + 1;
    } else {
      r = mid;
    }
  }
  a[0] = l;
  l = a[1], r = a[3];
  while (l < r) {
    mid = (l + r) / 2;
    a[3] = mid;
    if (get(a)) {
      r = mid;
    } else {
      l = mid + 1;
    }
  }
  a[3] = r;
  l = a[1], r = a[3];
  while (l < r) {
    mid = (l + r) / 2;
    a[1] = mid + 1;
    if (get(a)) {
      l = mid + 1;
    } else {
      r = mid;
    }
  }
  a[1] = r;
}
int main() {
  ios_base::sync_with_stdio(false);
  int n;
  cin >> n;
  b[0] = b[1] = a[0] = a[1] = 1;
  a[2] = a[3] = b[2] = b[3] = n;
  solve(a);
  if (a[2] != n && get1(a[2] + 1, 1, n, n)) {
    b[0] = a[2] + 1;
  } else if (a[3] != n && get1(1, a[3] + 1, n, n)) {
    b[1] = a[3] + 1;
  } else if (a[0] != 1 && get1(1, 1, a[0] - 1, n)) {
    b[2] = a[0] - 1;
  } else if (a[1] != 1 && get1(1, 1, n, a[1] - 1)) {
    b[3] = a[1] - 1;
  }
  solve(b);
  cout << "! ";
  for (int i = 0; i < 4; i++) {
    cout << a[i] << " ";
  }
  for (int i = 0; i < 4; i++) {
    cout << b[i] << " ";
  }
  return 0;
}
