#codefestival2015okinawai. [code_festival_2015_okinawa_i]Implementation Addict

[code_festival_2015_okinawa_i]Implementation Addict

问题

Wolf Sothe非常喜欢设计在线评测系统的问题,他想要尽可能地解决问题。然而,如果他每天都不休息地解决问题,那么渐渐地,他每天能够解决的问题数量将会减少。

因此,有时候Wolf Sothe需要休息一天。在那一天,他不解决任何问题,然后在接下来的日子里,他又可以继续解决问题了。

Wolf Sothe每天可以解决的问题数量如下:

  • 如果某一天是工作日,我们定义Wolf Sothe已经连续解决问题的天数为kk(不包括那一天)。那么在那一天,Wolf Sothe最多可以解决max(0,Ak×B)max(0, A - k \times B)个问题。
  • 如果某一天是休息日,那天不会解决任何问题。

Wolf Sothe想要解决问题的天数为NN天。假设在第1天之前的日子里,Wolf Sothe没有解决过问题。

另外,我们预先知道有一些已经确定的休息日。

给出所有已确定的休息日列表。对于其他的日子,你可以标记它们为休息日或者工作日。请找出在NN天内可以解决的问题数量的最大值。


输入

输入将通过标准输入给出,格式如下:

NN AA BB MM t1t_1 t2t_2 : tMt_M

  • 第一行为四个整数,用空格分隔:N(1N1,000,000,000)N(1≦N≦1,000,000,000)A(1A1,000,000,000)A(1≦A≦1,000,000,000)B(1B1,000,000,000)B(1≦B≦1,000,000,000)M(0M100,000)M(0≦M≦100,000)MM表示已确定的休息日的数量。
  • 接下来的MM行为额外的MM个整数,表示已确定的休息日。第ii行的整数ti(1tiN)t_i(1≦t_i≦N)表示第tit_i天是一个确定的休息日。请注意,如果i<ji < j,则ti<tjt_i<t_j

输出

请在一行中输出在NN天内可以解决的问题数量的最大值。

输出结束时换行。


输入示例 1


5 6 2 0

输出示例 1


20

假设Wolf Sothe在第3天休息,然后在剩下的4天里解决问题。

  • 对于第1天,Wolf Sothe已经连续解决问题的天数为00天。因此,max(0,60×2)=6max(0, 6 - 0 \times 2) = 6个问题。
  • 对于第2天,Wolf Sothe已经连续解决问题的天数为11天。因此,max(0,61×2)=4max(0,6 - 1 \times 2) = 4个问题。
  • 对于第3天,Wolf Sothe休息。因此,00个问题。
  • 对于第4天,Wolf Sothe已经连续解决问题的天数为00天。因此,max(0,60×2)=6max(0, 6 - 0 \times 2) = 6个问题。
  • 对于第5天,Wolf Sothe已经连续解决问题的天数为11天。因此,max(0,61×2)=4max(0, 6 - 1 \times 2) = 4个问题。

总共解决的问题数量为6+4+0+6+4=206 + 4 + 0 + 6 + 4 = 20


输入示例 2


6 4 3 1
3

输出示例 2


13

输入示例 3


12 10 3 3
2
7
10

输出示例 3


71