#Y0020. 裁缝师(tailor)

裁缝师(tailor)

题目描述

老李是某布行资深的裁缝师傅,他经常要将一块布裁剪成若干块小布。他是这样裁剪布料的:一刀下去,不管布有多长,都是沿直线剪开它为止。当然,他还可以一次剪多层布料,至于一次能剪多少层,则依赖于该布料的类型。例如:对于某种布料来说,一次只能剪一层布,那么要把一块 2×3 2 \times 3 的布料剪成 6 块 1×1 1 \times 1 的小布,总共需要剪 5 刀,如下图:

但是,对于另外一种不同的布料来说,如果这种布料一次可以剪两层布,那么只需要三刀就可以剪开布料了(剪完第一刀后,把剪开的两块布叠在一起,再剪第二、第三刀)。显然,在剪的过程中,叠放在一起剪的几块布料是可以不同形状的。比如 1×2 1 \times 2 的布料是可以叠放在 2×2 2 \times 2 的布料上裁剪的。注意,一块布料本身是不能折叠,所以 1×3 1 \times 3 的布料需要剪 2 刀,而不是 1 刀(对折再剪)。

老李想知道对于一块 N×M N \times M 的大布料,最少用多少刀就可以把它裁剪成 N×M N \times M 1×1 1 \times 1 的小布块。现在老李请你编写一个程序来完成这个任务。

输入格式

输入文件为 tailor.in
文件只有一行,共有三个数 L L N N M M 。第一个数 L L 1L200 1 \leq L \leq 200 )表示一刀可以裁剪的最大层数;第二个数 N N 和第三个数 M M 1N,M20 1 \leq N, M \leq 20 )表示布料的尺寸(三个数之间用一个或多个空格分开)。

输出格式

输出文件为 tailor.out
只有一个数,表示裁剪布料的最少刀数。

样例输入

1 3 2

样例输出

5