#include<stdio.h>
#include<algorithm>
using namespace std;
int m[10][10];
int R;
int C;
int a,b;
int dx[]={1,0,-1,0};
int dy[]={0,1,0,-1};
int solve(int s,int t,int u){
	if(u==0){
		if(s==R||t==C)return 1;
		else return 0;
	}
	int ret=0;
	for(int i=0;i<4;i++){
		int row=s;
		int col=t;
		while(1){
			row+=dx[i];
			col+=dy[i];
			if(row<0||col<0||row>=a||col>=b)break;
			if(m[row][col]==1){
				m[row][col]=3;
				ret+=solve(row,col,u-1);
				m[row][col]=1;
				break;
			}
		}
	}
	return ret;
}
int main(){
	while(scanf("%d%d",&b,&a),a){
		int c=0;
		for(int i=0;i<a;i++)
			for(int j=0;j<b;j++){
				scanf("%d",&m[i][j]);
				if(m[i][j]==1)c++;
				if(m[i][j]==2){R=i;C=j;}
			}
		printf("%d\n",solve(R,C,c));
	}
}