DFS
n,m = map(int,input().strip().split())
vis = [[0 for j in range(m)] for i in range(n)]
# martix =[[0 for j in range(m)] for i in range(n)]
ans=0
move=[(0,1),(1,0)]
def dfs(x,y):
global ans
if x==n-1 and y == m-1:
ans+=1
return
else:
vis[x][y]=1
for i in range(2):
x_new = x+move[i][0]
y_new = y+move[i][1]
if (x_new+1)%2==0 and (y_new+1)%2 ==0:
continue
if x_new<n and y_new<m and vis[x_new][y_new] ==0:
dfs(x_new,y_new)
vis[x_new][y_new]=0
dfs(0,0)
print(ans)
dp
n,m = map(int,input().strip().split())
dp = [[0 for j in range(m)]for i in range(n) ]
for i in range(n):
dp[i][0] =1
for j in range(m):
dp[0][j] =1
for i in range(n):
for j in range(m):
if i==0 or j==0:
dp[i][j] =1
elif (i+1)%2 ==0 and (j+1)%2==0:
dp[i][j] =0
else:
dp[i][j] = dp[i-1][j]+dp[i][j-1]
print(dp[n-1][m-1])