/*
Jackson Simoneau
SI@UCF 2026 - Intro to Competitive Programming

Solution to Find the Zero: https://codeforces.com/problemset/problem/2209/C
*/

#include <bits/stdc++.h>
using namespace std;

int main() {
    //Process test cases
    int t; cin >> t;
    while(t--) {
        int n; cin >> n;
        bool found = false;
        //We will use the first n-1 queries to test every pair of adjacent values (except the first pair)
        for(int i = 3; i <= 2*n; i += 2) {
            //Check positions i and i+1 in the array
            cout << "? " << i << " " << i+1 << endl;
            int r; cin >> r;
            //If we get a response of 1, both of these positions contain a 0
            if(r == 1) {
                //Choose either position and output it
                cout << "! " << i << endl;
                found = true;
                break;
            }
        }
        //If we already found a zero, go to the next case
        if(found) continue;

        //If all of the above queries return 0, we are certain that at least one of the
        //first two elements in the array contain a zero. Using two additional queries, we
        //will figure out which one it is
        int r1, r2;
        cout << "? 1 3" << endl;
        cin >> r1;
        cout << "? 1 4" << endl;
        cin >> r2;

        //After testing element 1 with elements 3 and 4, if either of these queries returned 1,
        //then the first element must be a 0. Otherwise, the second element must be a 0.
        if(r1 == 1 || r2 == 1) {
            cout << "! 1" << endl;
        } else {
            cout << "! 2" << endl;
        }
    }
}