#include<iostream>
using namespace std;
typedef long long ll;
int H,W;
int t[20][20];
ll u[20][20],ans;

bool inField(int x){
  if(1<=x&&x<=W)return true;
  return false;
}

int main(){
  while(cin>>W>>H){
    if(H==0&&W==0)break;
    for(int i=0;i<20;i++)for(int j=0;j<20;j++)u[i][j]=0;
    for(int i=1;i<=H;i++)for(int j=1;j<=W;j++)cin>>t[i][j];

    for(int i=0;i<20;i++)u[1][i]=(t[1][i]==1?0:1);

    for(int i=1;i<H;i++){
      for(int j=1;j<=W;j++){
	if(t[i][j]==1)u[i][j]=0;
	if(u[i][j]==0)continue;
	if(t[i][j]==2){
	  u[i+2][j]+=u[i][j];
	  continue;
	}
	for(int k=-1;k<=1;k++){
	  if(!inField(j+k))continue;
	  if(t[i+1][j+k]==0){
	    u[i+1][j+k]+=u[i][j];
	  }else if(t[i+1][j+k]==2&&k==0){
	    u[i+1][j+k]+=u[i][j];
	  }
	}
      }//j
    }//i
    ans=0;
    for(int i=H;i<20;i++){
      for(int j=1;j<=W;j++){
	if(t[i][j]==1)continue;
	ans+=u[i][j];
      }
    }
    cout<<ans<<endl;
  }
  return 0;
}