#include<iostream>
using namespace std;
int main (){
	bool svurshi=false;
long long redove,koloni,index,index2,broyach=1,x=1,y=1,broyach2=1;
long long kraina=1,kraina2=0,kraina3=0,kraina4=0;
cin>>redove>>koloni;
kraina2=koloni;
kraina3=redove*koloni;
if(redove==koloni){
cout<<1;
goto krai;	
}
kraina4=(redove*koloni-koloni)+1;
long long pole[redove][koloni];
for(index=0;index<redove;index++){
 for(index2=0;index2<koloni;index2++){
  	pole[index][index2]=broyach;
  	broyach++;
 }
}
index=1;
index2=1;
while(svurshi!=true){
if(pole[index][index2]==kraina or pole[index][index2]==kraina2 or pole[index][index2]==kraina3 or pole[index][index2]==kraina4){	
svurshi=true;
cout<<broyach2;
}
if(index+1>redove){
x=-1;
broyach2++;	

}
if(index-1<0){
x=1;
broyach2++;		
}
if(index2+1>koloni){
y=-1;
broyach2++;		
}
if(index2-1<0){
y=1;
broyach2++;		
}
index+=x;
index2+=y;
}
krai:;
return 0;
}
