AT_arc166_b [ARC166B] Make Multiples
Description
[problemUrl]: https://atcoder.jp/contests/arc166/tasks/arc166_b
整数列 $ A=(A_1,\ldots,A_N) $ および,正整数 $ a,b,c $ が与えられます.
あなたはこの数列に対して,以下の操作を($ 0 $ 回を含め)何回でも行うことができます.
- $ 1\leq\ i\leq\ N $ となる整数 $ i $ をひとつ選ぶ.$ A_i $ を $ A_i+1 $ で置き換える.
あなたの目的は,数列 $ A $ の中に,$ a $ の倍数,$ b $ の倍数,$ c $ の倍数がいずれもひとつ以上存在するようにすることです. 目的を達成するために必要な操作回数の最小値を求めてください.
Input Format
入力は以下の形式で標準入力から与えられます.
> $ N $ $ a $ $ b $ $ c $ $ A_1 $ $ \cdots $ $ A_N $
Output Format
目的を達成するために必要な操作回数の最小値を出力してください.
Explanation/Hint
### 制約
- $ 1\leq\ N\leq\ 2\times\ 10^5 $
- $ 1\leq\ a,\ b,\ c\ \leq\ 10^6 $
- $ 1\leq\ A_i\leq\ 10^{18} $
### Sample Explanation 1
操作を $ 2 $ 回行い $ A\ =\ (8,10,12) $ とすることで目的を達成できます.
### Sample Explanation 2
操作を $ 1 $ 回行い $ A\ =\ (14,11,60) $ とすることで目的を達成できます.
### Sample Explanation 3
操作を $ 3 $ 回行い $ A\ =\ (8,17,5,30,40,13) $ とすることで目的を達成できます.
### Sample Explanation 4
操作を $ 876537210887543205 $ 回行い $ A\ =\ (999994000010999994) $ とすることで目的を達成できます.