#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
//英语 看博友分析 抄博友程序 博弈 多维dp 没掌握
//抄博友分析
//用d[i][j][u][0]表示目前总共有i个甜甜圈,其中j个还未被取,u个在Steve处,且下一步到Steve走时,Steve能吃到的最多的甜甜圈,
//用d[i][j][u][1]表示目前总共有i个,j个未取,u个在Steve处,且下一步到Digit走时,Digit能吃到的最多的甜甜圈。
int dp[103][103][103][2];
int main()
{
while(1)
{
int n,m;
cin>>n>>m;
if(cin.eof()==1)
{
break;
}
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++)//共有i个甜甜圈
{
for(int j=1;j<=i;j++)//j个还未被取
{
int p=i-j;//已被取了p个
for(int u=0;u<=p;u++)//u个在Steve处 背
{
int q=i-j-u;//q个在Digit处
int mn=min(m,j);
int mx=0;
for(int v=1;v<=mn;v++)//Steve取v个甜甜圈 背
{
if(v==j)//取完
{
if(mx<(i-dp[i-u-v][i-u-v][0][1]))//没掌握
{
mx=i-dp[i-u-v][i-u-v][0][1];
}
}else
{
if(mx<(i-dp[i][j-v][u+v][1]))
{
mx=i-dp[i][j-v][u+v][1];
}
}
}
dp[i][j][u][0]=mx;
mx=0;
for(int v=1;v<=mn;v++)//Digit取v个甜甜圈
{
if(v==j)
{
if(mx<(i-dp[i-q-v][i-q-v][0][0]))
{
mx=(i-dp[i-q-v][i-q-v][0][0]);
}
}else
{
if(mx<(i-dp[i][j-v][u][0]))
{
mx=i-dp[i][j-v][u][0];
}
}
}
dp[i][j][u][1]=mx;
}
}
}
cout<<dp[n][n][0][0]<<endl;
}
return 0;
}