#ZF1132. ♿虚空卡比兽♿

♿虚空卡比兽♿

Description

otto 误入了一个迷宫,为了逃离迷宫,他需要寻找到虚空卡比兽,借助虚空之力离开迷宫。但是虚空卡比兽不甘心被 otto 抓住,在第一次被抓住时,它会进行一次虚空跳跃,瞬移到迷宫中的另一个位置,otto 需要第二次抓住虚空卡比兽才能顺利离开迷宫。

迷宫是由字符 "#.012"\texttt{"\#.012"}(不含双引号) 组成的大小为 nnmm 列的矩形。其中 #\texttt{\#} 以及矩形迷宫外是墙体,otto 不能移动至墙体以及矩形迷宫外部,其他字符的位置都能被通过。

  • #\texttt{\#} 代表迷宫的墙体;
  • .\texttt{.} 代表 otto 可行动的通道;
  • 0\texttt{0} 代表 otto 的初始位置;
  • 1\texttt{1} 代表虚空卡比兽的初始位置;
  • 2\texttt{2} 代表虚空卡比兽第一次被抓住后瞬移的位置。

在迷宫中,otto 如果没有遇到墙体,那么他就可以向上下左右任何一个方向移动,否则只能朝没有墙体的方向移动。但由于 otto 乘坐的是轮椅,otto 不能原地掉头,这意味着如果已经进行过移动,otto 就只能相对于原先移动方向前进,左转,右转,而不能直接后退。

otto 想知道是否存在一条路径使他最后能否顺利离开迷宫。

Format

Input

第一行有两个正整数 n,m (5n,m150)n, m\ (5 \leq n, m \leq 150),分别表示迷宫地图的行数和列数。

接下来有 nn 行,每行一个长度为 mm 的字符串,字符串仅包含 #.012\texttt{\#.012},保证字符 012\texttt{012} 在全部的字符串中出现且仅出现一次。

Output

输出有一行,如果存在一条路径使 otto 最后能够顺利离开迷宫,输出 YES\texttt{YES},否则输出 NO\texttt{NO},输出不区分大小写(yEs,yes,No,no\texttt{yEs,yes,No,no} 等都被视为合法输出)。

Samples

5 6
######
0.2.1#
######
####.#
##.#.#
NO
5 6
######
0.2.1.
####..
#..###
##.###
YES

Limitation

1s, 1024KiB for each test case.