在网上冲浪时,Slavko 看到了一个展示容器和管道系统的广告(该系统的一个示例如下图所示),并附带一条消息:“如果容器 1 开始注水,请确定容器被填满的顺序。”
该系统由 $K$ 个用 $1$ 到 $K$ 的数字表示的容器组成,我们可以用一个 $N$ 行 $M$ 列的字符矩阵来描述它。容器呈矩形,容器和管道的轮廓由以下字符表示:
-:如果是轮廓的水平部分,|:如果是轮廓的垂直部分,以及+:如果是轮廓的水平和垂直部分相交的地方。唯一的例外是容器和管道连接的地方。在这种情况下,容器的轮廓优先(参见样例)。
在每个容器内的任意位置,都有一个数字字符串表示该容器的编号,矩阵中的所有其他位置都等于 .(点)。
除编号为 $1$ 的容器外,所有容器都恰好有一根供水管从其顶端进入。编号为 $1$ 的容器没有供水管。
容器可以有多条(也可能为零条)排水管从其侧面流出。排水管离开容器的位置在矩阵中处于互不相同的行。
管道直接连接两个容器,这意味着不可能将管道分叉或将多条管道合并为一条,且任意两条管道不会相交。从源容器到目标容器的方向看,管道总是下降到下一行或保持在同一行。换句话说,它们绝不会回到上一行,因此水可以自由地从一个容器流向另一个容器。
水进入容器直到其被填满。如果水位达到排水管的高度,水将流经该管道,直到该管道所通往的容器被填满。
帮助 Slavko 确定容器被填满的顺序。
请注意:
- 测试数据满足:每个字符
+的左侧或右侧恰好相邻一个字符-,且上方或下方恰好相邻一个字符|,在上下左右方向上的所有其他相邻字符都等于.(点)。 - 管道在矩阵中与容器轮廓相邻的唯一位置是管道进入或离开容器的地方。换句话说,管道绝不会紧贴着容器延伸(与容器连接处除外)。供水管的入口在容器上方用字符
|标记,而排水管的出口在容器侧面用字符-标记。
输入格式
第一行包含两个整数 $N$ 和 $M$($1 \le N, M \le 1000$),表示矩阵的维度。
接下来的 $N$ 行,每行包含 $M$ 个字符,描述容器系统。
输出格式
输出 $K$ 行。第 $i$ 行包含第 $i$ 个被填满的容器的编号。保证解总是存在且唯一。
子任务
对于 $70\%$ 的测试数据,满足 $N, M \le 100$。
样例
输入样例 1
12 13 ..+--+....... +-|..|....... |.|.1|--+.... |.+--+..|.... |......+----+ +---+..|..2.| ....|..+----+ .+--+........ .|........... +---+........ |.3.|........ +---+........
输出样例 1
2 3 1
输入样例 2
8 10 .......... .......+-+ ...+---|1| ...|...+-+ ...|...... ..+-+..... ..|2|..... ..+-+.....
输出样例 2
2 1
说明
样例 1 说明
容器 1 开始注水。
容器 1 中的水位上升,并在某一时刻达到通往容器 2 的排水管高度。水流经该管道,直到容器 2 被填满。
此后,容器 1 中的水位继续上升,直到达到通往容器 3 的排水管高度,接着容器 3 被填满。
最后,容器 1 中的水位继续上升,容器 1 被填满。