// TEMPLATE - START
// ----------------------------------------------------
using namespace std;
// ----------------------------------------------------
// DEFINES - START
#include <bits/stdc++.h>
#define FAST \
ios_base::sync_with_stdio(0); \
cin.tie(0); \
cout.tie(0);
// Strings
#define nl endl
#define bl cout << endl
#define YES cout << "YES\n"
#define NO cout << "NO\n"
#define yn(x) \
if (x) \
YES; \
else \
NO;
#define yns(x, s1, s2) \
if (x) \
cout << s1 << "\n"; \
else \
cout << s2 << "\n";
#define fail(cond) \
if (cond) \
return void(NO);
#define success(cond) \
if (cond) \
return void(YES);
#define fail(cond, s) \
if (cond) \
return void(cout << s << nl);
#define success(cond, s) \
if (cond) \
return void(cout << s << nl);
// Types
#define ll long long
#define ld long double
#define ull unsigned long long
#define vl vector<ll>
#define pll pair<ll, ll>
#define vpll vector<pair<ll, ll>>
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
// Loops
#define lp(i, a, b) for (int i = (a); i < (b); i++)
#define rlp(i, a, b) for (int i = (b) - 1; i >= (a); i--)
#define readlp(arr, n) \
lp(i, 0, n) cin >> arr[i];
#define writelp(arr, n) \
lp(i, 0, n) cout << arr[i] << " "; \
bl;
#define write(v) \
for (auto x : v) \
cout << x << " "; \
bl;
#define vv \
ll n; \
cin >> n; \
vl v(n); \
readlp(v, v.size());
// DEFINES - END
// ----------------------------------------------------
// DATA_STRUCTURES - START
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
// Ordered set (no duplicates, ordered by Key)
template <class Key>
using ordered_set = tree<Key, null_type, less<Key>, rb_tree_tag, tree_order_statistics_node_update>;
// Ordered multi-set (allows duplicates, ordered by Key)
template <class Key>
using ordered_multi_set = tree<Key, null_type, less_equal<Key>, rb_tree_tag, tree_order_statistics_node_update>;
// Ordered map (Key -> Value, ordered by Key)
template <class Key, class Val>
using ordered_map = tree<Key, Val, less<Key>, rb_tree_tag, tree_order_statistics_node_update>;
// DATA_STRUCTURES - END
// ----------------------------------------------------
// ALGORITHMS - START
// Binary Search Custom:
// To Find...,Logical Condition,If Condition is Met...,Return Value
// Lower Bound (First element ≥x),arr[m] >= x,r = m,r
// Upper Bound (First element >x),arr[m] > x,r = m,r
// Last element <x,arr[m] < x,l = m,l
// Last element ≤x,arr[m] <= x,l = m,l
ll lowerBound(vector<ll> &v, ll x)
{
ll l = -1, r = v.size();
while (r > l + 1)
{
ll m = l + (r - l) / 2;
ll curr = v[m];
if (curr >= x)
r = m;
else
l = m;
}
return r;
}
// ALGORITHMS - END
// ----------------------------------------------------
// TEMPLATE END
// ====================================================
// Boody's Code
// 2026-08-17, 15:49:32
// Codeforces - The 2026 ICPC Egyptian Collegiate Programming Contest (Qualifications - Day 5)
// L. The Blind Artillery
// https://c...content-available-to-author-only...s.com/group/Rilx5irOux/contest/710922/problem/L
// Time limit: 00, Memory limit: 5
// status:
// Time taken:2
// ----------------------------------------------------
ll lo, m1, m2, hi;
ll ans1 = -1, ans2 = -1;
pll f(ll t)
{
cout << "? " << t << nl;
ll p, d;
cin >> p >> d;
return {p, d};
}
void lowerBoundt()
{
ll l = lo - 1, r = hi + 1;
while (r > l + 1)
{
ll m = l + (r - l) / 2;
pll curr = f(m);
if (curr.first == -1)
{
if (curr.second == 1)
lo = m + 1, l = m;
else
hi = m - 1, r = m;
}
else if (curr.first == 1)
{
m1 = m - 1, m2 = m + 1;
break;
}
else
{
if (curr.second == 1)
ans1 = m, m2 = m + 1, m1 = m;
else
ans2 = m, m1 = m - 1, m2 = m;
break;
}
}
}
ll lowerBoundt1(ll s, ll e)
{
ll l = s - 1, r = e + 1;
while (r > l + 1)
{
ll m = l + (r - l) / 2;
pll curr = f(m);
if (curr.first == 0)
r = m, l = m - 1;
else if (curr.first == -1)
l = m;
else
r = m;
}
return r;
}
ll lowerBoundt2(ll s, ll e)
{
ll l = s - 1, r = e + 1;
while (r > l + 1)
{
ll m = l + (r - l) / 2;
pll curr = f(m);
if (curr.first == 0)
l = m, r = m + 1;
else if (curr.first == -1)
r = m;
else
l = m;
}
return l;
}
void solve()
{
lo = 1, hi = 1e9, ans1 = -1, ans2 = -1;
lowerBoundt();
if (ans1 == -1)
ans1 = lowerBoundt1(lo, m1);
if (ans2 == -1)
ans2 = lowerBoundt2(m2, hi);
cout << "! " << ans1 << " " << ans2 << nl;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("/home/rodex/rubuntu/CS/CP/input.txt", "r", stdin);
freopen("/home/rodex/rubuntu/CS/CP/output.txt", "w", stdout);
#endif
FAST;
int t = 1;
cin >> t;
while (t--)
solve();
}
Ly8gVEVNUExBVEUgLSBTVEFSVAovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gREVGSU5FUyAtIFNUQVJUCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgojZGVmaW5lIEZBU1QgICAgICAgICAgICAgICAgICAgICAgXAogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgXAogICAgY2luLnRpZSgwKTsgICAgICAgICAgICAgICAgICAgXAogICAgY291dC50aWUoMCk7Ci8vIFN0cmluZ3MKI2RlZmluZSBubCBlbmRsCiNkZWZpbmUgYmwgY291dCA8PCBlbmRsCiNkZWZpbmUgWUVTIGNvdXQgPDwgIllFU1xuIgojZGVmaW5lIE5PIGNvdXQgPDwgIk5PXG4iCiNkZWZpbmUgeW4oeCkgXAogICAgaWYgKHgpICAgIFwKICAgICAgICBZRVM7ICBcCiAgICBlbHNlICAgICAgXAogICAgICAgIE5POwojZGVmaW5lIHlucyh4LCBzMSwgczIpICAgICAgXAogICAgaWYgKHgpICAgICAgICAgICAgICAgICAgXAogICAgICAgIGNvdXQgPDwgczEgPDwgIlxuIjsgXAogICAgZWxzZSAgICAgICAgICAgICAgICAgICAgXAogICAgICAgIGNvdXQgPDwgczIgPDwgIlxuIjsKI2RlZmluZSBmYWlsKGNvbmQpIFwKICAgIGlmIChjb25kKSAgICAgIFwKICAgICAgICByZXR1cm4gdm9pZChOTyk7CiNkZWZpbmUgc3VjY2Vzcyhjb25kKSBcCiAgICBpZiAoY29uZCkgICAgICAgICBcCiAgICAgICAgcmV0dXJuIHZvaWQoWUVTKTsKI2RlZmluZSBmYWlsKGNvbmQsIHMpIFwKICAgIGlmIChjb25kKSAgICAgICAgIFwKICAgICAgICByZXR1cm4gdm9pZChjb3V0IDw8IHMgPDwgbmwpOwojZGVmaW5lIHN1Y2Nlc3MoY29uZCwgcykgXAogICAgaWYgKGNvbmQpICAgICAgICAgICAgXAogICAgICAgIHJldHVybiB2b2lkKGNvdXQgPDwgcyA8PCBubCk7Ci8vIFR5cGVzCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nCiNkZWZpbmUgdmwgdmVjdG9yPGxsPgojZGVmaW5lIHBsbCBwYWlyPGxsLCBsbD4KI2RlZmluZSB2cGxsIHZlY3RvcjxwYWlyPGxsLCBsbD4+CiNkZWZpbmUgYWxsKHgpICh4KS5iZWdpbigpLCAoeCkuZW5kKCkKI2RlZmluZSByYWxsKHgpICh4KS5yYmVnaW4oKSwgKHgpLnJlbmQoKQovLyBMb29wcwojZGVmaW5lIGxwKGksIGEsIGIpIGZvciAoaW50IGkgPSAoYSk7IGkgPCAoYik7IGkrKykKI2RlZmluZSBybHAoaSwgYSwgYikgZm9yIChpbnQgaSA9IChiKSAtIDE7IGkgPj0gKGEpOyBpLS0pCiNkZWZpbmUgcmVhZGxwKGFyciwgbikgXAogICAgbHAoaSwgMCwgbikgY2luID4+IGFycltpXTsKI2RlZmluZSB3cml0ZWxwKGFyciwgbikgICAgICAgICAgICAgICAgXAogICAgbHAoaSwgMCwgbikgY291dCA8PCBhcnJbaV0gPDwgIiAiOyBcCiAgICBibDsKI2RlZmluZSB3cml0ZSh2KSAgICAgICAgICBcCiAgICBmb3IgKGF1dG8geCA6IHYpICAgICAgXAogICAgICAgIGNvdXQgPDwgeCA8PCAiICI7IFwKICAgIGJsOwojZGVmaW5lIHZ2ICAgIFwKICAgIGxsIG47ICAgICBcCiAgICBjaW4gPj4gbjsgXAogICAgdmwgdihuKTsgIFwKICAgIHJlYWRscCh2LCB2LnNpemUoKSk7Ci8vIERFRklORVMgLSBFTkQKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBEQVRBX1NUUlVDVFVSRVMgLSBTVEFSVAojaW5jbHVkZSA8ZXh0L3BiX2RzL2Fzc29jX2NvbnRhaW5lci5ocHA+CiNpbmNsdWRlIDxleHQvcGJfZHMvdHJlZV9wb2xpY3kuaHBwPgoKdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7CgovLyBPcmRlcmVkIHNldCAobm8gZHVwbGljYXRlcywgb3JkZXJlZCBieSBLZXkpCnRlbXBsYXRlIDxjbGFzcyBLZXk+CnVzaW5nIG9yZGVyZWRfc2V0ID0gdHJlZTxLZXksIG51bGxfdHlwZSwgbGVzczxLZXk+LCByYl90cmVlX3RhZywgdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPjsKCi8vIE9yZGVyZWQgbXVsdGktc2V0IChhbGxvd3MgZHVwbGljYXRlcywgb3JkZXJlZCBieSBLZXkpCnRlbXBsYXRlIDxjbGFzcyBLZXk+CnVzaW5nIG9yZGVyZWRfbXVsdGlfc2V0ID0gdHJlZTxLZXksIG51bGxfdHlwZSwgbGVzc19lcXVhbDxLZXk+LCByYl90cmVlX3RhZywgdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPjsKCi8vIE9yZGVyZWQgbWFwIChLZXkgLT4gVmFsdWUsIG9yZGVyZWQgYnkgS2V5KQp0ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBjbGFzcyBWYWw+CnVzaW5nIG9yZGVyZWRfbWFwID0gdHJlZTxLZXksIFZhbCwgbGVzczxLZXk+LCByYl90cmVlX3RhZywgdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPjsKLy8gREFUQV9TVFJVQ1RVUkVTIC0gRU5ECi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gQUxHT1JJVEhNUyAtIFNUQVJUCi8vIEJpbmFyeSBTZWFyY2ggQ3VzdG9tOgovLyBUbyBGaW5kLi4uLExvZ2ljYWwgQ29uZGl0aW9uLElmIENvbmRpdGlvbiBpcyBNZXQuLi4sUmV0dXJuIFZhbHVlCi8vIExvd2VyIEJvdW5kIChGaXJzdCBlbGVtZW50IOKJpXgpLGFyclttXSA+PSB4LHIgPSBtLHIKLy8gVXBwZXIgQm91bmQgKEZpcnN0IGVsZW1lbnQgPngpLGFyclttXSA+IHgsciA9IG0scgovLyBMYXN0IGVsZW1lbnQgPHgsYXJyW21dIDwgeCxsID0gbSxsCi8vIExhc3QgZWxlbWVudCDiiaR4LGFyclttXSA8PSB4LGwgPSBtLGwKCmxsIGxvd2VyQm91bmQodmVjdG9yPGxsPiAmdiwgbGwgeCkKewogICAgbGwgbCA9IC0xLCByID0gdi5zaXplKCk7CiAgICB3aGlsZSAociA+IGwgKyAxKQogICAgewogICAgICAgIGxsIG0gPSBsICsgKHIgLSBsKSAvIDI7CiAgICAgICAgbGwgY3VyciA9IHZbbV07CiAgICAgICAgaWYgKGN1cnIgPj0geCkKICAgICAgICAgICAgciA9IG07CiAgICAgICAgZWxzZQogICAgICAgICAgICBsID0gbTsKICAgIH0KICAgIHJldHVybiByOwp9Ci8vIEFMR09SSVRITVMgLSBFTkQKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBURU1QTEFURSBFTkQKCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi8vIEJvb2R5J3MgQ29kZQovLyAyMDI2LTA4LTE3LCAxNTo0OTozMgovLyBDb2RlZm9yY2VzIC0gVGhlIDIwMjYgSUNQQyBFZ3lwdGlhbiBDb2xsZWdpYXRlIFByb2dyYW1taW5nIENvbnRlc3QgKFF1YWxpZmljYXRpb25zIC0gRGF5IDUpCi8vIEwuIFRoZSBCbGluZCBBcnRpbGxlcnkKLy8gaHR0cHM6Ly9jLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5zLmNvbS9ncm91cC9SaWx4NWlyT3V4L2NvbnRlc3QvNzEwOTIyL3Byb2JsZW0vTAovLyBUaW1lIGxpbWl0OiAwMCwgTWVtb3J5IGxpbWl0OiA1Ci8vIHN0YXR1czoKLy8gVGltZSB0YWtlbjoyCgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmxsIGxvLCBtMSwgbTIsIGhpOwpsbCBhbnMxID0gLTEsIGFuczIgPSAtMTsKCnBsbCBmKGxsIHQpCnsKICAgIGNvdXQgPDwgIj8gIiA8PCB0IDw8IG5sOwogICAgbGwgcCwgZDsKICAgIGNpbiA+PiBwID4+IGQ7CiAgICByZXR1cm4ge3AsIGR9Owp9Cgp2b2lkIGxvd2VyQm91bmR0KCkKewogICAgbGwgbCA9IGxvIC0gMSwgciA9IGhpICsgMTsKICAgIHdoaWxlIChyID4gbCArIDEpCiAgICB7CiAgICAgICAgbGwgbSA9IGwgKyAociAtIGwpIC8gMjsKICAgICAgICBwbGwgY3VyciA9IGYobSk7CiAgICAgICAgaWYgKGN1cnIuZmlyc3QgPT0gLTEpCiAgICAgICAgewogICAgICAgICAgICBpZiAoY3Vyci5zZWNvbmQgPT0gMSkKICAgICAgICAgICAgICAgIGxvID0gbSArIDEsIGwgPSBtOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBoaSA9IG0gLSAxLCByID0gbTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoY3Vyci5maXJzdCA9PSAxKQogICAgICAgIHsKICAgICAgICAgICAgbTEgPSBtIC0gMSwgbTIgPSBtICsgMTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGlmIChjdXJyLnNlY29uZCA9PSAxKQogICAgICAgICAgICAgICAgYW5zMSA9IG0sIG0yID0gbSArIDEsIG0xID0gbTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgYW5zMiA9IG0sIG0xID0gbSAtIDEsIG0yID0gbTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQp9CgpsbCBsb3dlckJvdW5kdDEobGwgcywgbGwgZSkKewogICAgbGwgbCA9IHMgLSAxLCByID0gZSArIDE7CiAgICB3aGlsZSAociA+IGwgKyAxKQogICAgewogICAgICAgIGxsIG0gPSBsICsgKHIgLSBsKSAvIDI7CiAgICAgICAgcGxsIGN1cnIgPSBmKG0pOwogICAgICAgIGlmIChjdXJyLmZpcnN0ID09IDApCiAgICAgICAgICAgIHIgPSBtLCBsID0gbSAtIDE7CiAgICAgICAgZWxzZSBpZiAoY3Vyci5maXJzdCA9PSAtMSkKICAgICAgICAgICAgbCA9IG07CiAgICAgICAgZWxzZQogICAgICAgICAgICByID0gbTsKICAgIH0KICAgIHJldHVybiByOwp9CgpsbCBsb3dlckJvdW5kdDIobGwgcywgbGwgZSkKewogICAgbGwgbCA9IHMgLSAxLCByID0gZSArIDE7CiAgICB3aGlsZSAociA+IGwgKyAxKQogICAgewogICAgICAgIGxsIG0gPSBsICsgKHIgLSBsKSAvIDI7CiAgICAgICAgcGxsIGN1cnIgPSBmKG0pOwogICAgICAgIGlmIChjdXJyLmZpcnN0ID09IDApCiAgICAgICAgICAgIGwgPSBtLCByID0gbSArIDE7CiAgICAgICAgZWxzZSBpZiAoY3Vyci5maXJzdCA9PSAtMSkKICAgICAgICAgICAgciA9IG07CiAgICAgICAgZWxzZQogICAgICAgICAgICBsID0gbTsKICAgIH0KICAgIHJldHVybiBsOwp9Cgp2b2lkIHNvbHZlKCkKewogICAgbG8gPSAxLCBoaSA9IDFlOSwgYW5zMSA9IC0xLCBhbnMyID0gLTE7CiAgICBsb3dlckJvdW5kdCgpOwogICAgaWYgKGFuczEgPT0gLTEpCiAgICAgICAgYW5zMSA9IGxvd2VyQm91bmR0MShsbywgbTEpOwogICAgaWYgKGFuczIgPT0gLTEpCiAgICAgICAgYW5zMiA9IGxvd2VyQm91bmR0MihtMiwgaGkpOwogICAgY291dCA8PCAiISAiIDw8IGFuczEgPDwgIiAiIDw8IGFuczIgPDwgbmw7Cn0KCmludCBtYWluKCkKewojaWZuZGVmIE9OTElORV9KVURHRQogICAgZnJlb3BlbigiL2hvbWUvcm9kZXgvcnVidW50dS9DUy9DUC9pbnB1dC50eHQiLCAiciIsIHN0ZGluKTsKICAgIGZyZW9wZW4oIi9ob21lL3JvZGV4L3J1YnVudHUvQ1MvQ1Avb3V0cHV0LnR4dCIsICJ3Iiwgc3Rkb3V0KTsKI2VuZGlmCiAgICBGQVNUOwoKICAgIGludCB0ID0gMTsKICAgIGNpbiA+PiB0OwogICAgd2hpbGUgKHQtLSkKICAgICAgICBzb2x2ZSgpOwp9Cg==