#include <bits/stdc++.h>
using namespace std;
#include <atcoder/modint>
using mint = atcoder::modint998244353;

#define rep(i, l, r) for (int i = (int)(l); i<(int)(r); i++)
#define ll long long

int main() {
    int N, Q; cin >> N >> Q;
    vector<int> lose, win;
    for (int i = 0; i < 500; i++) {
        cout << "? " << 2*i+1 << " " << N << " " << 2*i+2 << " " << N << endl;
        int res; cin >> res;
        if (res == 1) {
            //[2*i:] < [2*i+1:]
            lose.push_back(2*i);
            win.push_back(2*i+1);
        }  
        else {
            //[2*i:] > [2*i+1:]
            lose.push_back(2*i+1);
            win.push_back(2*i);
        }
    }
    int loselose, winwin;
    loselose = 0;
    for (int i = 1; i < 500; i++) {
        //loseloseを決める
        cout << "? " << lose[loselose]+1 << " " << lose[loselose]+1 << " " << lose[i]+1 << " " << lose[i]+1 << endl;
        int res; cin >> res;
        if (res == 0) {
            //loselose > i
            loselose = i;
        }
    }
    winwin = 0;
    for (int i = 1; i < 500; i++) {
        cout << "? " << win[winwin]+1 << " " << N << " " << win[i]+1 << " " << N << endl;
        int res; cin >> res;
        if (res == 1) {
            //winwin < i
            winwin = i;
        }
    }
    cout << "! " << lose[loselose]+1 << " " << lose[loselose]+1 << " " << win[winwin]+1 << " " << N << endl;
}