#include using namespace std; using ll=long long; const ll ILL=2167167167167167167; const int INF=2100000000; #define rep(i,a,b) for (int i=(int)(a);i<(int)(b);i++) #define all(p) p.begin(),p.end() template using _pq = priority_queue, greater>; template int LB(vector &v,T a){return lower_bound(v.begin(),v.end(),a)-v.begin();} template int UB(vector &v,T a){return upper_bound(v.begin(),v.end(),a)-v.begin();} template bool chmin(T &a,T b){if(b bool chmax(T &a,T b){if(a void So(vector &v) {sort(v.begin(),v.end());} template void Sore(vector &v) {sort(v.begin(),v.end(),[](T x,T y){return x>y;});} bool yneos(bool a,bool upp=false){if(a){cout<<(upp?"YES\n":"Yes\n");}else{cout<<(upp?"NO\n":"No\n");}return a;} template void vec_out(vector &p,int ty=0){ if(ty==2){cout<<'{';for(int i=0;i<(int)p.size();i++){if(i){cout<<",";}cout<<'"'< T vec_min(vector &a){assert(!a.empty());T ans=a[0];for(auto &x:a) chmin(ans,x);return ans;} template T vec_max(vector &a){assert(!a.empty());T ans=a[0];for(auto &x:a) chmax(ans,x);return ans;} template T vec_sum(vector &a){T ans=T(0);for(auto &x:a) ans+=x;return ans;} int pop_count(long long a){int res=0;while(a){res+=(a&1),a>>=1;}return res;} template T square(T a){return a * a;} void solve(); // CITRUS CURIO CITY / FREDERIC int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int t = 1; // cin >> t; rep(i, 0, t) solve(); } void solve(){ vector> ans; auto ask = [&](int x1, int x2, int y1, int y2) -> int { cout << "? " << x1 << " " << x2 - 1 << " " << y1 << " " << y2 - 1 << endl; int res; cin >> res; return res; }; // const int L = 10; const int L = 1'000'001; auto f = [&](auto self, int x1, int x2, int y1, int y2) -> void { if (ask(x1, x2, y1, y2)){ if (x2 - x1 == 1){ if (y1 + 1 == y2){ ans.push_back({x1, y1}); } else{ int m = (y1 + y2) / 2; self(self, x1, x2, y1, m); self(self, x1, x2, m, y2); } } else{ int m = (x1 + x2) / 2; self(self, x1, m, y1, y2); self(self, m, x2, y1, y2); } } }; f(f, 0, L, 0, L); cout << "! " << ans.size() << endl; for (auto [a, b] : ans) cout << a << " " << b << endl; }