#include <iostream>
#include <fstream>
#include <algorithm>
#include <cassert>
#include <cctype>
#include <cmath>
#include <complex>
#include <cstdio>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
using namespace std;

#define rep(i,n) for(int i=0;i<n;i++)

int X,Y,m[15][17],dp[15][17];

int main(){
	while(cin>>X>>Y&&X){
		rep(i,Y)fill(dp[i],dp[i]+17,0);
		rep(i,Y)rep(j,X){
			cin>>m[i][j+1];
			if(!i&&!m[i][j+1])dp[i][j+1]=1;
		}
		for(int i=1;i<Y;i++)for(int j=1;j<=X;j++){
			if(m[i][j]==0){
				for(int k=-1;k<2;k++)if(m[i-1][j+k]==0)dp[i][j]+=dp[i-1][j+k];
				if(i>1&&m[i-2][j]==2)dp[i][j]+=dp[i-2][j];
				if(i==Y-1&&m[i-1][j]==2)dp[i][j]+=dp[i-1][j];
			}
			if(m[i][j]==1&&i==Y-1&&m[i-1][j]==2)dp[i][j]+=dp[i-1][j];
			if(m[i][j]==2){
				if(m[i-1][j]==0)dp[i][j]=dp[i-1][j];
				if(i>1&&m[i-2][j]==2)dp[i][j]+=dp[i-2][j];
				if(i==Y-1&&m[i-1][j]==2)dp[i][j]+=dp[i-1][j];
			}
		}
		int ans=0;
		rep(i,X)ans+=dp[Y-1][i+1];
		cout<<ans<<endl;
	}
}