#include <bits/stdc++.h>
#define f fflush(stdout)
using namespace std;
int n,i,j,k,m,sum1=1,sum2=1,val1,val2,suma=1,sumb=1,x;
int a[1005],b[1005],c[1005],d[1005];
queue<int> q1,q2;
int main() {
cin>>n>>m;
int tmp1=m,tmp2=n;
q1.push(1);
q2.push(1);
for(i=2;i<=m && tmp1>1;i++){
if(tmp1%i==0){
q1.push(i);
while(tmp1%i==0){
tmp1/=i;
a[i]++;
}
suma*=(a[i]+1);
}
}
for(i=2;i<=n && tmp2>1;i++){
if(tmp2%i==0){
q2.push(i);
while(tmp2%i==0){
tmp2/=i;
b[i]++;
}
sumb*=(b[i]+1);
}
}
a[1]=1;b[1]=1;
while(!q1.empty()){
int tmp=q1.front();q1.pop();
if(tmp==m) continue;
printf("? %d %d %d %d %d %d\n",n,m-tmp,1,1,1,tmp+1);
f;
cin>>x;
if(x==0){
if(tmp>1) sum1*=(a[tmp]+1);
}
else{
c[tmp]=a[tmp];
if(tmp==1) break;
}
}
while(!q2.empty()){
int tmp=q2.front();q2.pop();
if(tmp==n) continue;
printf("? %d %d %d %d %d %d\n",n-tmp,m,1,1,tmp+1,1);
f;
cin>>x;
if(x==0){
if(tmp>1) sum2*=(b[tmp]+1);
}
else{
d[tmp]=b[tmp];
if(tmp==1) break;
}
}
if(c[1]==1) val1=suma;
else{
int sum=1;
for(i=2;i<=m;i++)
sum*=(c[i]+1);
val1=sum1*(sum-1);
if(val1==0) val1=1;
}
if(d[1]==1) val2=sumb;
else{
int sum=1;
for(i=2;i<=n;i++)
sum*=(d[i]+1);
val2=sum2*(sum-1);
if(val2==0) val2=1;
}
printf("! %d",val1*val2);
f;
return 0;
}
评测姬一直返回格式错误,但似乎没有错呀QAQ