#P1005. Farmer Long

Farmer Long

题目描述

在一个 NNMM 列的棋盘上,Farmer Long 站在右上角的格子中。开始时他面向着棋盘下方。FL 按照如下规则在棋盘上移动:

  1. FL 绝对不会再次踏上一个他曾经站过的格子,也不会走出边界,他认为这像 Farmer 一样愚蠢。
  2. FL每次可以在不违反规则 1 的条件下向着他的前进方向移动任意步,然后他可以右转。但他每次右转后必须至少要向前移动 11 格,即不允许连续进行 22 次右转。
  3. 开始时 FL 只能前进不能右转。
  4. FL 可以在任何他想停下的位置停下,结束移动,并开始 “生产面包”。

现在请你编写一个程序,计算在上面所说的规则下,FL “生产面包” 时,可能的走出的路径有多少种。

输入格式

输入文件包括若干行,每行包括两个正整数 NNMM1N,M10001\le N,M\le 1000)。

一行 N=M=0N=M=0 标志着输入数据的结束,这一行不用处理。

输出格式

输出文件包括若干行,每行输出一个数表示输入文件中对应行为 NNMM 的棋盘上 FL 所能走出的路径数。因为这个数可能很大,所以最后只用输出这个数除以 12345671234567 的余数即可。

1 1
1 3
2 2
2 3
0 0
1
1
4
7

数据规模

对于 20%20\% 的数据,0<N,M50<N,M\le5。 对于 60%60\% 的数据,0<N,M1000<N,M\le100

每个输入文件最多有 200200 行输入数据。