#include <iostream>
using namespace std;
__int64 dp[12][2050];
int h,w,i,j,stateNum;
void dfs(int pos, int state)
{
if(pos == w+1)
{
dp[i+1][state] += dp[i][j];
return;
}
else
{
if ((j >> (pos-1) & 1) == 1)
{
dfs(pos+1, state);
}
else
{
if (pos+1 <= w && (j >> pos & 1) == 0)
{
dfs(pos+2, state);
}
dfs(pos+1, state | (1 << (pos-1)));
}
}
}
int main()
{
while (scanf("%d %d", &h, &w) != EOF)
{
if (h*w % 2)
{
printf("0\n");
continue;
}
else if(h == 0 && w == 0)
{
break;
}
memset(dp, 0, sizeof(dp));
dp[0][0] = 1;
stateNum = 1 << w;
for (i = 0; i <= h-1; ++i)
{
for (j = 0; j < stateNum; ++j)
{
if (dp[i][j])
{
dfs(1,0);
}
}
}
printf("%I64d\n", dp[h][0]);
}
return 0;
}