const fs = require("fs")
const [n, ...mapPipe] = fs.readFileSync("./test").toString().trim().split("\n")
const arrMap = mapPipe.map(m => m.split(" "))
const target = Number(n)
const prefix = [
  { x: 1, y: 0 },
  { x: 1, y: 1 },
  { x: 0, y: 1 },
]
let count = 0
const search = point => {
  if (point.x == target - 2 && point.y == target - 2) {
    count++
    return
  }
  for (let i = 0; i < prefix.length; i++) {
    const nextX = point.x + prefix[i].x
    const nextY = point.y + prefix[i].y
    if (
      nextX < target &&
      nextY < target &&
      arrMap[nextX][nextY] != 1 &&
      arrMap[nextX][nextY] != 2
    ) {
      if (
        (prefix[i].x === 1 &&
          prefix[i].y === 1 &&
          (arrMap[nextX][nextY - 1] == 1 || arrMap[nextX][nextY - 1] == 2)) ||
        arrMap[nextX - 1]?.[nextY] == 1 ||
        arrMap[nextX - 1]?.[nextY] == 2
      ) {
        continue
      }
      arrMap[nextX][nextY] = 2
      search({ x: nextX, y: nextY })
      arrMap[nextX][nextY] = 0
    }
  }
  return
}
search({ x: 0, y: 0 })
console.log(count)