#include<cstdio>

using namespace std;

int run[15][15],w,h;
int memo[15][15];

int ski(int x,int y,bool s)
{
	if(y>=h)			return 1;
	if(memo[y][x]!=-1)	return memo[y][x];
	if(run[y][x]==1)	return memo[y][x]=0;
	if(run[y][x]==2)	return s?ski(x,y+2,true):0;

	if(y==h-1)	return memo[y][x]=1;

	int cnt=0;
	for(int dx=-1;dx<=1;dx++){
		int xx=x+dx;
		if(0<=xx && xx<w)	cnt+=ski(xx,y+1,!dx);
	}
	return memo[y][x]=cnt;
}

int main()
{
	for(;scanf("%d%d",&w,&h),w;){
		for(int y=0;y<h;y++)
			for(int x=0;x<w;x++)
				scanf("%d",run[y]+x),memo[y][x]=-1;

		int cnt=0;
		for(int x=0;x<w;x++)	cnt+=ski(x,0,true);
		printf("%d\n",cnt);
	}

	return 0;
}