#include <bits/stdc++.h>
using namespace std;
mt19937 gen(time(0));
int x11 = 8;
int y11 = 7;
int x12 = 90;
int y12 = 37;
int x21 = 4;
int y21 = 64;
int x22 = 4;
int y22 = 100;
int check(int x1, int y1, int x2, int y2) {
  int count = 0;
  if (x11 >= x1 && x12 <= x2 && y11 >= y1 && y12 <= y2) {
    count++;
  }
  if (x21 >= x1 && x22 <= x2 && y21 >= y1 && y22 <= y2) {
    count++;
  }
  return count;
}
void task() {
  int n;
  cin >> n;
  int left1, left2;
  int right1, right2;
  int up1, up2;
  int down1, down2;
  int l = 0;
  int r = n;
  while (r - l > 1) {
    int m = (r + l) / 2;
    cout << "? ";
    cout << 1 << ' ' << 1 << ' ' << m << ' ' << n << '\n';
    cout.flush();
    int k;
    cin >> k;
    if (k == 2) {
      r = m;
    } else {
      l = m;
    }
  }
  right2 = r;
  l = 0;
  r = right2;
  while (r - l > 1) {
    int m = (r + l) / 2;
    cout << "? ";
    cout << 1 << ' ' << 1 << ' ' << m << ' ' << n << '\n';
    cout.flush();
    int k;
    cin >> k;
    if (k == 1) {
      r = m;
    } else {
      l = m;
    }
  }
  right1 = r;
  l = 0;
  r = n;
  while (r - l > 1) {
    int m = (r + l) / 2;
    cout << "? ";
    cout << 1 << ' ' << 1 << ' ' << n << ' ' << m << '\n';
    cout.flush();
    int k;
    cin >> k;
    if (k == 2) {
      r = m;
    } else {
      l = m;
    }
  }
  up2 = r;
  l = 0;
  r = up2;
  while (r - l > 1) {
    int m = (r + l) / 2;
    cout << "? ";
    cout << 1 << ' ' << 1 << ' ' << n << ' ' << m << '\n';
    cout.flush();
    int k;
    cin >> k;
    if (k == 1) {
      r = m;
    } else {
      l = m;
    }
  }
  up1 = r;
  l = 0;
  r = n + 1;
  while (r - l > 1) {
    int m = (r + l) / 2;
    cout << "? ";
    cout << m << ' ' << 1 << ' ' << n << ' ' << n << '\n';
    cout.flush();
    int k;
    cin >> k;
    if (k == 2) {
      l = m;
    } else {
      r = m;
    }
  }
  left2 = l;
  l = left2;
  r = n + 1;
  while (r - l > 1) {
    int m = (r + l) / 2;
    cout << "? ";
    cout << m << ' ' << 1 << ' ' << n << ' ' << n << '\n';
    cout.flush();
    int k;
    cin >> k;
    if (k == 1) {
      l = m;
    } else {
      r = m;
    }
  }
  left1 = l;
  l = 0;
  r = n + 1;
  while (r - l > 1) {
    int m = (r + l) / 2;
    cout << "? ";
    cout << 1 << ' ' << m << ' ' << n << ' ' << n << '\n';
    cout.flush();
    int k;
    cin >> k;
    if (k == 2) {
      l = m;
    } else {
      r = m;
    }
  }
  down2 = l;
  l = down2;
  r = n + 1;
  while (r - l > 1) {
    int m = (r + l) / 2;
    cout << "? ";
    cout << 1 << ' ' << m << ' ' << n << ' ' << n << '\n';
    cout.flush();
    int k;
    cin >> k;
    if (k == 1) {
      l = m;
    } else {
      r = m;
    }
  }
  down1 = l;
  vector<int> left;
  vector<int> right;
  vector<int> up;
  vector<int> down;
  left.push_back(left2);
  left.push_back(left1);
  right.push_back(right2);
  right.push_back(right1);
  down.push_back(down2);
  down.push_back(down1);
  up.push_back(up2);
  up.push_back(up1);
  for (int l = 0; l < 2; l++) {
    for (int r = 0; r < 2; r++) {
      for (int u = 0; u < 2; u++) {
        for (int d = 0; d < 2; d++) {
          vector<int> z1;
          z1.push_back(left[l]);
          z1.push_back(down[d]);
          z1.push_back(right[r]);
          z1.push_back(up[u]);
          vector<int> z2;
          z2.push_back(left[1 - l]);
          z2.push_back(down[1 - d]);
          z2.push_back(right[1 - r]);
          z2.push_back(up[1 - u]);
          if (z1[0] > z1[2] || z1[1] > z1[3] || z2[0] > z2[2] ||
              z2[1] > z2[3]) {
            continue;
          }
          int ans1, ans2;
          cout << "? " << z1[0] << ' ' << z1[1] << ' ' << z1[2] << ' ' << z1[3]
               << '\n';
          cout.flush();
          cin >> ans1;
          cout << "? " << z2[0] << ' ' << z2[1] << ' ' << z2[2] << ' ' << z2[3]
               << '\n';
          cout.flush();
          cin >> ans2;
          if (ans1 == 1 && ans2 == 1) {
            cout << "! " << z1[0] << ' ' << z1[1] << ' ' << z1[2] << ' '
                 << z1[3] << ' ' << z2[0] << ' ' << z2[1] << ' ' << z2[2] << ' '
                 << z2[3] << '\n';
            cout.flush();
            return;
          }
        }
      }
    }
  }
}
int main() {
  srand(time(0));
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  task();
  return 0;
}
