#include <iostream>
#include <map>
using namespace std;
map<int, int> queries;
int ask(int x, int y = 1, int z = 1) {
    if (queries.find(x) != queries.end()) return queries[x];
    cout << "? " << x << ' ' << y << ' ' << z << endl;
    cin >> queries[x];
    return queries[x];
}
int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int q, n, m, k;
    cin >> n >> m >> k >> q;
    
    int left = 1, right = n;
    int akt_max = ask(1);
    while (left < right) {
        int mid = (left + right + 1) / 2;
        int val = ask(mid);
        if (val <= akt_max) right = mid - 1;
        else {
            int val2 = ask(mid - 1);
            if (val2 < val) {
                left = mid;
                akt_max = val;
            }
            else right = mid - 1;
        }
    }
    cout << "! " << left << ' ' << 1 << ' ' << 1 << '\n'; 
    return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |