#include<iostream>
#include<cstring>
using namespace std;

int dp[17][17];
int map[17][17];
int y,x;

long long int check(int i,int j)
{
  if(j>=x||j<0)
    return 0;
  if(i>=y)
    return 1;

  if(map[i][j]==1)
    return 0;

  if(dp[i][j]!=-1)
    return dp[i][j];

  long long int sum=0; 
  if(i>=y-1)
    sum=1;
  else if(map[i][j]==2)
    sum=check(i+2,j);
  else
    {
      if(j-1>=0 && map[i+1][j-1]==0)
	sum+=check(i+1,j-1);
      sum+=check(i+1,j);
      if(j+1<x && map[i+1][j+1]==0)
	sum+=check(i+1,j+1);
    }
    

  // cout<<i<<" "<<j<<" " <<sum<<endl;
  dp[i][j]=sum;
  return sum;
}

int main()
{
  for(;cin>>x>>y,x;)
    {
      memset(dp,-1,sizeof(dp));
      memset(map,0,sizeof(map));
      for(int i=0;i<y;i++)
	for(int j=0;j<x;j++)
	  {
	    cin>>map[i][j];
	  }
      long long int ans=0;
      for(int i=0;i<x;i++)
	ans+=check(0,i);
      cout<<ans<<endl;
    }
}