#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int X,Y;
int f[20][20];
int dp[20][20];
int d[3]={1,0,-1};
int main()
{
	while(1)
	{
		int ans=0;
		memset(dp,0,sizeof(dp));
		memset(f,0,sizeof(f));
		scanf("%d %d",&Y,&X);
		if(X==0&&Y==0)break;
		for(int i=0;i<X;i++)
		{
			for(int j=0;j<Y;j++)
			{
				scanf("%d",&f[i][j]);
			}
		}
		for(int i=0;i<Y;i++)
		{
			if(f[0][i]==0)dp[0][i]=1;
			else dp[0][i]=0;
		}
		for(int i=0;i<X-1;i++)
		{
			for(int j=0;j<Y;j++)
			{
				if(f[i][j]==0)
				{
					for(int k=0;k<3;k++)
					{
						if(j+d[k]<0||j+d[k]>=Y)continue;
						if(f[i+1][j+d[k]]==2&&d[k]!=0)continue;
						//if(j==Y-1&&d[k]!=0)continue;
						dp[i+1][j+d[k]]+=dp[i][j];
					}
				}
				else if(f[i][j]==2)
				{
					dp[i+2][j]+=dp[i][j];
				}
			}
		}
		/*cout << endl;
		for(int i=0;i<=X+1;i++)
		{
			for(int j=0;j<Y;j++)
			{
				cout << dp[i][j] << ' ';
			}
			cout << endl;
		}*/
		for(int i=X-1;i<=X;i++)
		{
			for(int j=0;j<Y;j++)if(f[i][j]!=1)
			{
				ans+=dp[i][j];
			}
		}
		printf("%d\n",ans);
	}
	return 0;
}