#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<map>
#include<cstring>
#include<string>
using namespace std;
int X,Y;
int fie[20][20];
int dp[20][20];
int dx[]={-1,0,1};
int solve(int x,int y){
  if(dp[x][y]!=-1) return dp[x][y];
  if(y>=Y-1) return dp[x][y]=1;
  if(fie[x][y]==2){
    if(fie[x][y+2]!=1)
      return dp[x][y]=solve(x,y+2);
    return dp[x][y]=0;
  }
  int ret=0;
  for(int i=0;i<3;i++){
    int nx=x+dx[i];
    if(nx < 0 || nx >= X) continue;
    if(fie[nx][y+1]==1) continue;	 
    if(i==1){
      ret += solve(nx,y+1);
    }else{
      if(fie[nx][y+1]==2) continue;
      ret += solve(nx,y+1);
    }
  }
  return dp[x][y]=ret;
}
int main(){
  while(1){
    cin >> X >> Y;
    if(X==0 && Y==0) break;
    memset(fie,0,sizeof(fie));
    for(int i=0;i<Y;i++)
      for(int j=0;j<X;j++) cin >> fie[j][i];
    memset(dp,-1,sizeof(dp));
    int res=0;
    for(int i=0;i<X;i++){
      if(fie[i][0]==0)
	res += solve(i,0);
    }
    cout << res << endl;
  }
  
}