刺猬最近记起了他最喜欢的童年活动之一:拼图,现在他重新投入其中。他可以从早到晚都和他的朋友坐在成千上万的碎片中,一个接一个地寻找所需的碎片。
不久,刺猬想出了一个绝妙的主意:不购买现成的拼图,而是将自己画有一些图案的大矩形纸张切成许多小矩形块,然后将它们混合并试图还原图案。这样产生的拼图比现成的拼图更具挑战性:现在所有碎片都具有相同的矩形大小,并且可以仅依靠在碎片上绘制的图案来还原图案。
所有碎片都是相同的尺寸 x×y,图案首先水平切割,间距为 x,然后垂直切割,间距为 y。我们将图案的初始大小表示为 A×B,然后 A 必须可以整除 x,B 必须可以整除 y(x 和 y 是整数)。
然而,并非每次切割图案都会产生很好的拼图。刺猬认为当切割出来的所有碎片中,没有任意两片可以通过旋转成为相同的的时候,这种切割方案是好的。
你的任务是计算给定图案中,你可以从中产生的好的切割方案的数量,并输出可行方案中最小碎片的尺寸。
第一行包含两个数字 A 和 B 表示原图案的大小。随后的 A 行,每行 B 个大写英文字母,表示原图案。
在第一行输出好的切割的数量,这个数字应当是个正整数,因为原图案自身就是一个好的切割方案。
在第二行输出最小面积的好的切割方案产生的碎片的 x 和 y,若有多种方案产生的碎片的面积相同,则输出 x 最小的一个。
刺猬最近记起了他最喜欢的童年活动之一:拼图,现在他重新投入其中。他可以从早到晚都和他的朋友坐在成千上万的碎片中,一个接一个地寻找所需的碎片。
不久,刺猬想出了一个绝妙的主意:不购买现成的拼图,而是将自己画有一些图案的大矩形纸张切成许多小矩形块,然后将它们混合并试图还原图案。这样产生的拼图比现成的拼图更具挑战性:现在所有碎片都具有相同的矩形大小,并且可以仅依靠在碎片上绘制的图案来还原图案。
所有碎片都是相同的尺寸 $x\times y$,图案首先水平切割,间距为 $x$,然后垂直切割,间距为 $y$。我们将图案的初始大小表示为 $A\times B$,然后 $A$ 必须可以整除 $x$,$B$ 必须可以整除 $y$($x$ 和 $y$ 是整数)。
然而,并非每次切割图案都会产生很好的拼图。刺猬认为当切割出来的所有碎片中,没有任意两片可以通过旋转成为相同的的时候,这种切割方案是好的。
你的任务是计算给定图案中,你可以从中产生的好的切割方案的数量,并输出可行方案中最小碎片的尺寸。
## 输入格式
第一行包含两个数字 $A$ 和 $B$ 表示原图案的大小。随后的 $A$ 行,每行 $B$ 个大写英文字母,表示原图案。
## 输出格式
在第一行输出好的切割的数量,这个数字应当是个正整数,因为原图案自身就是一个好的切割方案。
在第二行输出最小面积的好的切割方案产生的碎片的 $x$ 和 $y$,若有多种方案产生的碎片的面积相同,则输出 $x$ 最小的一个。
第一次写翻译,若有不足,敬请指出,十分感谢!