Problem:
Score : 300 points

Problem Statement

You are given N positive integers a_1, a_2, ..., a_N.

For a non-negative integer m, let f(m) = (m\ mod\ a_1) + (m\ mod\ a_2) + ... + (m\ mod\ a_N).

Here, X\ mod\ Y denotes the remainder of the division of X by Y.

Find the maximum value of f.

Constraints

All values in input are integers.

2 \leq N \leq 3000

2 \leq a_i \leq 10^5

Input

Input is given from Standard Input in the following format:

N
a_1 a_2 ... a_N

Output

Print the maximum value of f.

Sample Input 1

3
3 4 6

Sample Output 1

10

f(11) = (11\ mod\ 3) + (11\ mod\ 4) + (11\ mod\ 6) = 10 is the maximum value of f.

Sample Input 2

5
7 46 11 20 11

Sample Output 2

90

Sample Input 3

7
994 518 941 851 647 2 581

Sample Output 3

4527

Solution in PHP (5.6.30) (judge verdict: Runtime Error)

<?php
//error_reporting(0);
$N = trim(fgets(STDIN));
//list($n,$m,$d) = explode(" ",trim(fgets(STDIN)));
$a = explode(" ",trim(fgets(STDIN)));
$b = $a;
$lcm = MathAppend::lcm($b)-1;
$res = 0;
foreach($a as $k=>$v) {
  $res += $lcm % $v;
}
printf("%d\n",$res);


        /**
         * Class MathAppend
         *
         * 数学的によく使う処理をまとめたクラスです
         */
        class MathAppend {

                /////////////////////////////////////////////////////////////////////////
                //
                // constructor
                //
                /////////////////////////////////////////////////////////////////////////

                private function __construct() {
                }



                /////////////////////////////////////////////////////////////////////////
                //
                // public functions
                //
                /////////////////////////////////////////////////////////////////////////

                /**
                 * 最大公約数を求めます
                 *
                 * @param  array $list 比較数値配列
                 * @return int         最大公約数
                 *
                 * @usage  echo MathAppend::gcd(1071, 1029); // 21
                 */
                public static function gcd(array $list) {
                        // validationだけ先に
                        $c = count($list);
                        if ($c === 0)
                                return 0;
                        else if ($c === 1)
                                return $list[0];

                        return self::calcGCD($list);
                }

                /**
                 * 最小公倍数を求めます
                 *
                 * @param  array $list 比較数値配列
                 * @return int         最小公倍数
                 *
                 * @usage  echo MathAppend::lcm(1071, 1029); // 52479
                 */
                public static function lcm(array $list) {
                        // validationだけ先に
                        $c = count($list);
                        if ($c === 0)
                                return 0;
                        else if ($c === 1)
                                return 1;

                        return self::calcLCM($list);
                }



                /////////////////////////////////////////////////////////////////////////
                //
                // private functions
                //
                /////////////////////////////////////////////////////////////////////////

                /**
                 * 最大公約数を求めます(本体)
                 *
                 * @param  array &$list 比較数値配列
                 * @return int          最大公約数
                 */
                private static function calcGCD(array &$list) {
                        $c = count($list);

                        // ユークリッドの互除法を末尾2要素にかける
                        $v = $list[$c - 1] % $list[$c - 2];
                        if ($v === 0) {
                                if ($c === 2)
                                        return $list[$c - 2];

                                // 2要素の最大公約数が決まったら、配列を更新して再帰
                                array_pop($list);
                                return self::calcGCD($list);
                        }

                        $list[$c - 1] = $list[$c - 2];
                        $list[$c - 2] = $v;
                        return self::calcGCD($list);
                }

                /**
                 * 最小公倍数を求めます(本体)
                 *
                 * @param  array &$list 比較数値配列
                 * @return int          最小公倍数
                 */
                private static function calcLCM(array &$list) {
                        $c = count($list);
                        $v = $list[$c - 1] * $list[$c - 2] / self::gcd(array($list[$c - 1], $list[$c - 2]));

                        if ($c === 2)
                                return $v;

                        $list[$c - 2] = $v;
                        array_pop($list);
                        return self::calcLCM($list);
                }
        }