#include <iostream>
#include <vector>
using namespace std;

int main()
{
	int X, Y;

	while( cin >> X >> Y && ( X || Y ) ){
		vector< vector< int > > map( Y + 1, vector< int >( X + 2, 0 ) );
		vector< vector< int > > memo = map;
		for( int i = 1; i < Y + 1; ++i ){
			for( int j = 1; j < X + 1; ++j ){
				cin >> map[ i ][ j ];
			}
		}
		for( int i = 1; i < X + 1; ++i ){
			if( map[ 1 ][ i ] == 0 ){
				memo[ 1 ][ i ] = 1;
			}
		}
		for( int i = 2; i < Y + 1; ++i ){
			for( int j = 1; j < X + 1; ++j ){
				if( map[ i ][ j ] == 1 ) continue;
				if( map[ i ][ j ] == 2 ){
					memo[ i ][ j ] = memo[ i - 1 ][ j ];
				}else{
					for( int k = -1; k < 2; ++k ){
						if( map[ i - 1 ][ j + k ] == 0 ){
							memo[ i ][ j ] += memo[ i - 1 ][ j + k ];
						}
					}
				}
				if( map[ i - 2 ][ j ] == 2 ){
					memo[ i ][ j ] += memo[  i - 2 ][ j ];
				}
			}
		}
		int ans = 0;
		for( int i = 1; i < X + 1; ++i ){
			ans += memo[ Y ][ i ];
			if( map[ Y - 1 ][ i ] == 2 ){
				ans += memo[ Y - 1 ][ i ];
			}
		}
		cout << ans << endl;
	}

	return 0;
}