你得到了一张黑白图像,其中表示了两个整数的和,每个整数都用正字计数法(tally marks)表示。你的任务是确定这两个整数的和。
正字计数法是一种众所周知的数字表示方式。当你在递增计数时不想擦除之前的记录,就会使用这种方法。在这种表示法中,一个数字 $x$ 被拆分为尽可能多的 5,加上剩余的标记。每个 5 由四条竖线和一条穿过这四条竖线的横线表示。剩余的标记则由相应数量的竖线表示。
图像由多个区域组成,每个区域包含多个扇区。斜线表示为直线段。为了绘制线段,连接来自不同扇区的两个不同像素以形成线段的端点。线段端点的粗细是预先定义的,线段的粗细从一个端点到另一个端点线性变化。端点的粗细取决于其所在扇区的宽度(sectorwidth)和/或高度(sectorheight)。
共有三种类型的区域,每种区域具有不同的尺寸以及竖线和横线的排列方式。最初,所有区域的中心位于同一条水平线上,一个接一个排列。相邻区域之间的距离在 10 到 20 像素之间。
区域类型如下:
$R_x$:$x$ 条竖线($1 \le x \le 4$),表示数值 $x$。 该区域的高度在 10 到 120 像素之间,宽度在 $10x$ 到 $30x$ 像素之间。该区域被划分为 $3 \times (2x+1)$ 个等尺寸的扇区网格。线段从扇区 $(1, 2i)$ 绘制到扇区 $(3, 2i)$,其中 $i \in [1, x]$。线段端点的粗细在 $1$ 到 $1 + \frac{\text{sectorwidth}}{8}$ 之间。
$R_5$:5 条斜线(四条竖线和一条横线),表示数值 5。 该区域的高度在 10 到 120 像素之间,宽度在 40 到 120 像素之间。该区域被划分为 $3 \times 11$ 个等尺寸的扇区网格。线段从扇区 $(1, 2i)$ 绘制到扇区 $(3, 2i)$,其中 $i \in [1, 4]$,最后一条线段从扇区 $(2, 1)$ 绘制到扇区 $(2, 11)$。线段端点的粗细在 $1$ 到 $1 + \frac{\text{sectorwidth}}{8}$ 之间。
$P$:表示加号。 该区域的高度和宽度均在 40 到 80 像素之间。该区域被划分为 $7 \times 7$ 个等尺寸的扇区网格。一条竖线从扇区 $(1, 4)$ 绘制到 $(7, 4)$,粗细从 $1$ 到 $1 + \frac{\text{sectorwidth}}{9}$。一条横线从扇区 $(4, 1)$ 绘制到 $(4, 7)$,粗细从 $1$ 到 $1 + \frac{\text{sectorheight}}{9}$。
整个表达式由以下区域序列表示:$R_5, R_5, \dots, R_5, R_a, P, R_5, R_5, \dots, R_5, R_b$,其中 $a, b \in [1, 5]$。
在绘制所有线段后,所有区域会垂直移动不超过 $\frac{h}{2}$ 像素($h$ 为区域高度)。最后,整个图像会旋转一定的角度。你可以假设旋转后,所有线段都位于图像边界内。此外,保证不应该相交或接触的线段不会发生此类情况。(如果两个线段的像素在水平、垂直或对角方向上相邻,则认为这两个线段接触。)应该相交的线段是穿过同一区域竖线的横线以及构成加号的线段。
此外,需要注意的是,由于离散化,线段边缘可能会出现缺陷。这些缺陷表现为轻微的错位或间隙,但它们仅出现在边缘处。
输入格式
第一行包含两个整数 $n$ 和 $m$($100 \le n, m \le 1000$),分别表示图像的高度和宽度。
接下来的 $n$ 行,每行包含 $m$ 个字符,每个字符要么是句点“.”,要么是井号“#”。句点表示白色像素,井号表示黑色像素。图像背景为白色,所有线条均为黑色。
输出格式
输出一个整数:图像中表示的两个数字之和。
样例
输入格式 1
100 354 (图像数据)
输出格式 1
17
输入格式 2
135 269 (图像数据)
输出格式 2
14
输入格式 3
292 450 (图像数据)
输出格式 3
18