#include <iostream>
#include <algorithm>

using namespace std;

int vis[15][15];

int bfs(int a[15][15], int n, int m, int s, int t)
{
  int c = 0;
  if(s+1 == n){
    vis[s][t] = 1;
    return 1;
  }

  if(vis[s][t] > 0){
    return vis[s][t];
  }

  if(a[s][t] == 2){
    if(s+2 >= n){
      vis[s][t] = 1;
      return 1;
    }
    c = bfs(a, n, m, s+2, t);
  } else {

    if(t-1 >= 0){
      if(a[s+1][t-1] == 0){
	c += bfs(a, n, m, s+1, t-1);
      }
    }
    if(a[s+1][t] != 1){
      c += bfs(a, n, m, s+1, t);
    }
    
    if(t+1 < m){
      if(a[s+1][t+1] == 0){
      c += bfs(a, n, m, s+1, t+1);
      }
    }
  }
  vis[s][t] = c;

  return c;
}

int main()
{
  int n, m, c;
  int a[15][15];

  while(1){
    cin >> m >> n;
    if(n == 0 && m == 0){
      break;
    }

    fill(&vis[0][0], &vis[14][14], -1);

    for(int i = 0; i < n; i++){
      for(int j = 0; j < m; j++){
	cin >> a[i][j];
      }
    }
    c = 0;
    for(int i = 0; i < m; i++){
      if(a[0][i] != 1){
	c += bfs(a, n, m, 0, i);
      }
    }
    for(int i = 0; i < n; i++){
      for(int j = 0; j < m; j++){
	printf("%2d ", vis[i][j]);
      }
      cout << endl;
    }

    cout << c << endl;
  }


  return 0;
}