小苏很喜欢玩搭积木的游戏(积木为边长为 1 的立方体),他想在长方形的桌面上用积木搭一座城堡。这个桌面长为 K,宽为 L,他将这个桌面分成 K×L 个小方块,每个小方块可放若干个积木,若某个小方块上积木个数为 N(N≥1),则这些积木只能组成一个底面积为 1,高为 N 的长方体,放在桌面上。 小苏已构思好他的城堡,但不知道能否按照构思搭出这座城堡。 构思是这样的:从正前方向正后方,以及从左方向右方分别观察这座城堡,不管从哪个角度观察,从左向右数,他依次可以看到每一列上最高的积木的高度,现在他设计好了这些最高高度,请你根据他的数据来搭城堡。若能,则计算出所有可能搭出的城堡中需要积木块数的最小值和最大值。若不能,输出-1
第一行两个数字 K 和 L,分别表示桌面的长和宽。 接下来 K 行,每行一个数字,表示从前面向后面看,从左向右依次所能看到的每一列上积木搭的最大高度 H。 再接下来 L 行,每行一个数字,表示从左方向右方看,从左向右依次所能看到的每一列上积木搭的最大高度 H。
共一行,两个值分别是所需积木的最小和最大值,数据之间用一 个空格格开。若无解输出-1。
4 3 1 3 4 2 1 4 2
10 21
2 2 4 1 1 3
-1
【数据规模】 对于 40%数据:1≤K,L≤1000,0≤H≤5000; 对于 100%数据:1≤K,L≤100000,0≤H≤5000。