给你一个长度为n的序列, a1, a2,……an,你有两种操作:
1. 你可以移除一段长度为X的连续的子区间(X < n),并花费X * A的硬币。
2. 你可以通过一次操作将数列的任意一个元素进行加一或减一,并花费B的硬币。
1操作只能操作一次,2操作可以进行多次,但不能对同一个元素操作多次,也就是每一个元素只能最多操作一次。
现在你想花费最少的硬币使操作之后的序列所有元素的Gcd大于1, 请你输出最小花费。
第一行包括3个数 n,A,B, 表示含义如题面所述。
第二行包括n个数ai (2 <= ai <= 109)。
n<=1,000,000
0<=A,B<1000,000,000
输出仅一行,包含一个整数最小的花费。
3 1 4
4 2 3
1
5 3 2
5 17 13 5 6
8
8 3 4
3 7 5 4 3 12 9 4
13
Note第一组样例可以花费1的代价将3这个元素移除剩下的数Gcd为2