#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <deque>
#include <string>
using namespace std;

int main() {
	// your code goes here
	int X,Y;
	
	while(cin >> X >> Y && X){
	int maps[20][20]={};
	int DP[20][20]={};
	for(int j=1;j<=X;j++)
		DP[1][j]=1;
	for(int i=1;i<=Y;i++)
		for(int j=1;j<=X;j++)
			cin >> maps[i][j];
	for(int i=1;i<=Y-1;i++)
		for(int j=1;j<=X;j++)
			if(maps[i][j]==0){
				for(int k=-1;k<=1;k++)
					if(maps[i+1][j+k]!=2 || k==0)
					DP[i+1][j+k]+=DP[i][j];
			}
			else if(maps[i][j]==2)
					DP[i+2][j]+=DP[i][j];
	int sum=0;
	
	for(int i=Y;i<Y+2;i++)
		for(int j=1;j<=X;j++)
			if(maps[i][j]!=1)
				sum+=DP[i][j];
	cout << sum << endl;
}
	
	return 0;
}