rt
#include<bits/stdc++.h>
using namespace std;
//#define int long long
#define push_back emplace_back
int n,place,a,b,x,y,q;
int ask[1055][1055];
signed main()
{
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
cin>>n;
if(n&1)
{
int l=1,r=n;
while(l<r)
{
int mid=(l+r)/2;
cout<<'?'<<' '<<1<<' '<<mid<<' '<<2<<'\n'<<flush;
cin>>x;
cout<<'?'<<' '<<mid+1<<' '<<n<<' '<<2<<'\n'<<flush;
cin>>y;
a=x*2-mid,b=y*2-(n-mid);
if(a+1==b) l=mid+1;
else r=mid;
}
cout<<'!'<<' '<<l<<flush;
}
else
{
int l=1,r=n;
while(l<=r)
{
int mid=(l+r)/2;
if(l+1==r)
{
if(!place)
{
if(l!=1)
{
cout<<'?'<<' '<<1<<' '<<l<<' '<<n<<'\n'<<flush;
cin>>x;
if(x==1) cout<<'!'<<' '<<l<<'\n'<<flush;
else cout<<'!'<<' '<<l+1<<'\n'<<flush;
}
else
{
cout<<'?'<<' '<<2<<' '<<n<<' '<<n<<'\n'<<flush;
cin>>x;
if(x==1) cout<<'!'<<' '<<2<<'\n'<<flush;
else cout<<'!'<<' '<<1<<'\n'<<flush;
}
}
else
{
if(l!=1)
{
cout<<'?'<<' '<<1<<' '<<l<<' '<<2<<'\n'<<flush;
cin>>x;
int a=x*2-l;
if(place==1) a--;
else if(place==n) ask[l+2][n]--;
if(a==ask[l+2][n]) cout<<'!'<<' '<<l+1<<flush,exit(0);
else cout<<'!'<<' '<<l<<flush,exit(0);
}
else
{
cout<<'?'<<' '<<2<<' '<<n<<' '<<2<<'\n'<<flush;
cin>>x;
if(place==n) ask[3][n]--;
if(x==ask[3][n]) cout<<'!'<<' '<<1<<'\n'<<flush;
else cout<<'!'<<' '<<2<<'\n'<<flush;
}
}
return 0;
}
else
{
cout<<'?'<<' '<<1<<' '<<mid<<' '<<2<<'\n'<<flush;
cin>>x;
cout<<'?'<<' '<<mid+1<<' '<<n<<' '<<2<<'\n'<<flush;
cin>>y;
a=x*2-mid,b=y*2-(n-(mid+1)+1);
if(a==b&&(!place))
{
if(mid==1)
{
cout<<'?'<<' '<<2<<' '<<n<<' '<<n<<'\n'<<flush;
cin>>q;
if(q==1) place=1;
else place=n;
}
else
{
cout<<'?'<<' '<<1<<' '<<mid<<' '<<n<<'\n'<<flush;
cin>>q;
if(q==2) place=1;
else place=n;
}
}
ask[1][mid]=a,ask[mid+1][n]=b;
if(place==1) a--;
else if(place==n) b--;
if(a>b) r=mid;
else l=mid+1;
}
}
cout<<'!'<<' '<<l<<flush;
}
return 0;
}