#include<iostream>
using namespace std;
int n, m;
int dfs(int flag, int timeLeft)
{
if (timeLeft == 0)
{
if (flag == 1)
return 1;
else return 0;
}
if (flag == 1)
{
return dfs(n, timeLeft-1) + dfs(2, timeLeft-1);
}
else
{
if (flag == n)
{
return dfs(n - 1, timeLeft-1) + dfs(1, timeLeft-1);
}
else
{
return dfs(flag-1, timeLeft-1) + dfs(flag-1, timeLeft-1);
}
}
}
int main()
{
cin >> n >> m;
cout<<dfs(1, m);
return 0;
}
using namespace std;
int n, m;
int dfs(int flag, int timeLeft)
{
if (timeLeft == 0)
{
if (flag == 1)
return 1;
else return 0;
}
if (flag == 1)
{
return dfs(n, timeLeft-1) + dfs(2, timeLeft-1);
}
else
{
if (flag == n)
{
return dfs(n - 1, timeLeft-1) + dfs(1, timeLeft-1);
}
else
{
return dfs(flag-1, timeLeft-1) + dfs(flag-1, timeLeft-1);
}
}
}
int main()
{
cin >> n >> m;
cout<<dfs(1, m);
return 0;
}