#include <iostream>
using namespace std;

int dmap[15][15];
int dpmap[15][15];
int dfs(int, int, int);
int dx[]={-1, 0, 1};
int h, w;

int main(){
  while(1){
    cin >> w >> h;
    if(w==0 && h==0) break;

    for(int i=0;i<h;i++){
      for(int j=0;j<w;j++){
        cin >> dmap[i][j];
      }
    }


    int ans=0;
    for(int i=0;i<h;i++){
      for(int j=0;j<w;j++){
	dpmap[i][j]=-1;
      }
    }
    for(int i=0;i<w;i++){
      if(dmap[0][i]==0){
	int tmp=dfs(0,i,1);
	if(tmp!=0) ans+=tmp;
      }
    }
    cout << ans << endl;
  }
  return 0;
}

int dfs(int y, int x, int d){
  int sum=0;
  if(y>=h){
    return 1;
  }
  else if(dmap[y][x]==1){
    dpmap[y][x]=0;
    return 0;
  }
  else if(dmap[y][x]==2){
    if(d==1){
      if(y==h-2){
	dpmap[y][x]=1;
	return 1;
      }
      if(dpmap[y+2][x]!=-1){
	sum+=dpmap[y+2][x];
	dpmap[y][x]=sum;
	return sum;
      }
      else{
	sum+=dfs(y+2, x, 1);
	dpmap[y][x]=sum;
	return sum;
      }
    }
    else{
      return 0;
    }
  }
else if(y==h-1){
    sum+=dfs(y+1, x, 1);
    dpmap[y][x]=sum;
    return sum;
  }
 else{
    for(int i=0;i<3;i++){
      int tx=x+dx[i];
      int ty=y+1;
      if(tx<0 || tx>=w) continue;
      if(dmap[ty][tx]==1) continue;
      if(dmap[ty][tx]==2 && i!=1) continue;
      if(dpmap[ty][tx]!=-1){
	sum+=dpmap[ty][tx];
      }
      else sum+=dfs(ty, tx, i);
    }
  }
  dpmap[y][x]=sum;
  return sum;
}