简单题
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

给定一个长度为n,下标从1开始的正整数序列a,再给定一个正整数x

你可以随意将序列a重排,然后进行n次操作,第i次操作将x变为x+\lfloor \frac{a_i}{x} \rfloor \times [ a_i+( a_i\mod x ) ]

其中,\lfloor \frac{a_i}{x} \rfloor 表示不大于 \frac{a_i}{x}的最大整数,比如\lfloor \frac{10}{3} \rfloor=3 ;
a_i \mod x表示x整除a_i得到的余数,比如10 \mod 3=1

求在所有的排列方案中,n次操作之后的x的最小值。

输入描述:

第一行一个正整数n(1\le n\le 20)

第二行n个正整数a_1,a_2,...,a_n(1\le a_i\le 10^8)

第三行一个正整数x(1 \le x \leq 10^8)

输出描述:

一个正整数,表示在所有的排列方案中,n次操作之后的x的最小值。
示例1

输入

复制
4
1 5 10 20
3

输出

复制
36

说明

有一种方案是将序列重排为\{ 10,1,5,20 \},第一次操作x变为3+\lfloor \frac{10}{3} \rfloor \times[ 10+ ( 10 \mod 3 ) ]=36,之后的操作x的值都不变。

可以证明,其它的方案都不比这个方案更优。

备注: