#P5647. 荷叶池塘

荷叶池塘

题目描述

为了便于牛们欣赏和锻炼,农夫JOHN{JOHN}在他的农场上新添加了一个美丽的池塘。

JOHN{JOHN}的池塘是一个长方形,他已经把它划分成了M{M}N{N}列的小正方行 (1<=M<=30{(1 <= M <= 30}; 1<=N<=30).{1 <= N <= 30). }某些正方行里是石头,另外一 些则是特别结实的荷叶,其余则只有清水。

为了锻炼,Bessie{Bessie}想从一片荷叶跳到另外一片。她的每一次跳跃都是一个象棋中的马步:两行一列或一行两列。 JOHN{JOHN}看到了Bessie{Bessie}并且发现有时Bessie{Bessie}没有办法达到她的目标荷叶。

他准备添加一些荷叶来让Bessie{Bessie}完成她的目标。当然,荷叶不能放在石头上。 帮助JOHN{JOHN}找出他最少要放多少片荷叶和他一共有多少种放最少片荷叶的方案。

输入格式

1{1}行: 两个整数, M{M }N{N}

2{2 \sim}M+1{M+1}行: 第i+1{i+1}包含N{N}个数,分别为第i{i}行的N{N}个格子的情况。 0{0}表示格子为空,1{1}表示有一片荷叶,2{2}表示格子里有石头,3{3}表示此格子是Bessie{Bessie}的起点,4{4 }表示此格子是Bessie{Bessie}的目标。

输出格式

1{1}行: 一个数,最少情况下需要添加的荷叶数目。

如果没有方案存在,输出1{- 1}

2{2}行: 一个数,达到最小值的方案总数。

这个数保证不超过内设64{64}位整数(longlong/int64){(long long/ int64)}的大小。如果第一行是1{-1,}不要输出此行。

样例

输入样例

4 5
1 0 0 0 0
3 0 0 0 0
0 0 2 0 0
0 0 0 4 0

输出样例

2 
3

提示

输入解释:

池塘含4{4}5{5}列。Bessie{Bessie}在第2{2}行第1{1}列并且想跳到第4{4}行第4{4}列。池塘里有1{1}块 石头和3{3}片荷叶

输出解释:

至少需要2{2}片荷叶。一共有三种摆法: 第4{4}行第2{2}列,第2{2}行第3{3}列 第1{1}行第3{3}列,第3{3}行第2{2}列 第1{1}行第3{3}列,第2{2}行第5{5}

R1C2,R2C3     R1C3,R3C2     R1C3,R2C5
          1 0 0 0 0     1 0 X 0 0     1 0 X 0 0
          3 0 X 0 0     3 0 0 0 0     3 0 0 0 X
          0 0 2 0 0     0 X 2 0 0     0 0 2 0 0
          0 X 0 4 0     0 0 0 4 0     0 0 0 4 0