#include<stdio.h>
#include<cstdio>
#include<string.h>
#include<cstring>
#include<algorithm>
#include<functional>
#include<math.h>
#include<queue>
#include<ctype.h>
#define MAX  1000000000
#define MIN -1000000000
using namespace std;
int i,j;
int x,y;
long long int dp[1000][1000];
int map[1000][1000];
int main(void){
	scanf("%d %d",&x,&y);
	while(x!=0 && y!=0){
		for(i=1;i<=17;i++){
			for(j=1;j<=15;j++){
				dp[i][j]=0;
				map[i][j]=0;
			}
		}
		for(i=1;i<=y;i++){
			for(j=1;j<=x;j++){
				scanf("%d ",&map[i][j]);
			}
		}
		for(i=1;i<=x;i++){
			if(map[1][i]!=1){
				dp[1][i]=1;
			}
		}
		for(i=1;i<y;i++){
			for(j=1;j<=x;j++){
				if(dp[i][j]>0 && map[i][j]!=2){
					if(map[i+1][j-1]==0){
						if(j-1<0);
						else {
							dp[i+1][j-1]+=dp[i][j];
						}
					}
					if(map[i+1][j]!=1 ){
						if(map[i+1][j]==0){
							dp[i+1][j]+=dp[i][j];
						}
						else {
							int temp;
							temp=i+1;
							while(map[temp][j]==2){
								temp+=2;
								dp[temp][j]+=dp[i][j];
							}
						}
					}
					if(map[i+1][j+1]==0){
						if(j+1>x);
						else {
							dp[i+1][j+1]+=dp[i][j];
						}
					}
				}
			}
		}
		/*for(i=1;i<=y+1;i++){
			printf("%d=",i);
			for(j=1;j<=x;j++){
				printf("%d ",dp[i][j]);
			}
			printf("\n");
		}*/
		int cnt=0;
		for(i=0;i<=2;i++){
			for(j=1;j<=x;j++){
				cnt+=dp[y+i][j];
			}
		}
		printf("%d\n",cnt);
		scanf("%d %d",&x,&y);
	}
	return 0;
}