#include<bits/stdc++.h>
using namespace std;
typedef int ll;
ll n,m;
ll ff(ll x)
{
	ll cnt=0;
	for(ll i=1;i<=x;i++) if(x%i==0) cnt++;
	return cnt;
}
ll qu(ll opt,ll x,ll l,ll r)
{
	if(opt) printf("? %d %d %d %d %d %d\n",n,x,1,l,1,r);
	else printf("? %d %d %d %d %d %d\n",x,m,l,1,r,1);
	fflush(stdout);
	ll oo;
	scanf("%d",&oo);
	return oo;
}
ll check(ll x,ll opt)
{
	vector<ll> gg;
	ll xx=x;
	for(ll i=2;i<=x;i++)
	{
		while(xx%i==0)
		{
			gg.push_back(i);
			xx/=i;
		}
	}
	xx=x;
	for(ll i=0;i<gg.size();i++)
	{
		ll qq=xx/gg[i],ok;
		if(gg[i]==2) ok=qu(opt,qq,1,qq+1);
		else if(gg[i]==3) ok=qu(opt,qq,1,qq+1)&qu(opt,qq,qq*2+1,qq+1);
		else ok=qu(opt,gg[i]/2*qq,1,gg[i]/2*qq+1)&qu(opt,gg[i]/2*qq,1,gg[i]/2*qq+qq+1)&qu(opt,gg[i]/2*qq,qq+1,gg[i]/2*qq+qq+1);
		if(ok) xx/=gg[i];
	}
	return ff(x/xx);
}
int main(void)
{
	scanf("%d%d",&n,&m);
	printf("! %d",check(n,0)*check(m,1));
	fflush(stdout);
}