#include <iostream>
#include <cstring>
using namespace std;
int h, w;
__int64 dp[12][1 << 12];
//判断该行0的个数是否为偶数
bool ok(int t)
{
int cnt = 0; //当前位之后0的个数
for (int i = 0; i < w; i++)
{
if (t & 1) //目前最后一位为1
{
if (cnt & 1)
return false;
}
else //目前最后一位为0
++cnt;
t >>= 1;
}
if (cnt & 1) //该行0的总数为奇数
return false;
return true;
}
int main()
{
while (cin >> h >> w)
{
if (h == 0 && w == 0)
break;
if (h * w % 2 == 1)
{
cout << 0 << endl;
continue;
}
memset(dp, 0, sizeof(dp));
dp[0][0] = 1;
for (int i = 1; i <= h; i++)
{
for (int j = 0; j < (1 << w); j++)
for (int k = 0; k < (1 << w); k++)
if (((k & j) == 0) && ok(k ^ j))
dp[i][j] += dp[i - 1][k];
}
cout << dp[h][0] << endl;
}
return 0;
}