#include <iostream>
#include <vector>
#include <cstring>
#include <algorithm>
#include <map>
using namespace std;

int tt[20][20];
int dp[20][20][20];
int W,H;

int rec(int x,int y,int px){
	if( x < 0 || x >= W ) return 0;
	if( tt[y][x] == 1 ) return 0;
	if( tt[y][x] == 2 && x != px ) return 0;
	
	if( y >= H-1 ) return 1;
	
	
	if( dp[x][y][px] != -1 ) return dp[x][y][px];
	int ans = 0;
	if( tt[y][x] == 2 ){
		ans += rec(x,y+2,x);
	}else{
		ans += rec(x,y+1,x);
		ans += rec(x+1,y+1,x);
		ans += rec(x-1,y+1,x);
	}
	return dp[x][y][px] = ans;
}

int main(){
	while(cin >> W >> H&&(W||H)){
		memset(dp,-1,sizeof(dp));
		for(int i = 0 ; i < H ; i++){
			for(int j = 0 ; j < W ; j++)
				cin >> tt[i][j];
		}
		int ans = 0;
		for(int i = 0 ; i < W ; i++){
			ans += rec(i,0,0);
		}
		cout << ans << endl;
		//return 0;
		
	}
}