#include<iostream>

using namespace std;

int X, Y;
int status[17][18];	//status[x][y]
int i, j;
int count;

void check(int x, int y);

int main(){

	while(1){

		count = 0;

		cin >> X >> Y;

		if(X == 0 && Y == 0){break;}

		else{

			//フィールドの入力
			//i行目について( 1 <= i <= Y+2 )
			for(i = 1; i <= Y+2; i++){
				//j文字目について( 0 <= j <= X+1)
				for(j = 0; j <= X+1; j++){

					//Y+1, Y+2列目に移動できるようにする。
					if(i > Y){
						status[j][i] = 0;
					}
					//両サイドには障害物を敷き詰める。
					else if(j == 0 || j == X+1){
						status[j][i] = 1;
					}
					else{
						cin >> status[j][i];
					}
				}
			}

			for(i = 1; i <= X; i++){
				check(i, 1);
			}

			cout << count << endl;
		}
	}

	return 0;
}


void check(int x, int y){

	if(status[x][y] == 0 && y >= Y){
		count++;
	}
	else if(status[x][y] == 1){}
	else if(status[x][y] == 2){
		check(x, y+2);
	}
	else{
		if(status[x-1][y+1] == 0){
			check(x-1, y+1);
		}
		if(status[x][y+1] == 0 || status[x][y+1] == 2){
			check(x, y+1);
		}
		if(status[x+1][y+1] == 0){
			check(x+1, y+1);
		}
	}
}