#joi2017hod. [joi2017ho_d]サッカー (Soccer)

[joi2017ho_d]サッカー (Soccer)

你是 JOI 联赛的一家名门足球俱乐部的经理。

俱乐部有 N 名球员,每个球员都被分配了从 1 到 N 的编号。球员们每天在场地上训练,目标是夺冠。球场呈长方形,纵向长 H 米,横向长 W 米。球场的纵向为南北方向平行,横向为东西方向平行。从球场的西北角向南移动 i 米,向东移动 j 米的位置称为点 (i, j)。

训练结束后,必须收拾使用过的球。起始时,球员 i (1iN1 \leqq i \leqq N) 位于位置 (Si,Ti)(S_i, T_i),只有球员 1 持有一个球。你和球员 N 一起位于位置 (SN,TN)(S_N, T_N),通过将球移动到位置 (SN,TN)(S_N, T_N) 来完成清理工作。在整个清理过程中,你无法移动。

你可以指示球员们采取行动。球员们采取行动后,会累积疲劳度。

以下行动中,持有球的球员可以执行行动 (i),(ii),(iii),其他球员可以执行行动 (ii),(iv)。

(i) 指定东西南北四个方向中的一个方向和一个正整数 p。踢球朝指定方向移动球,使球正好移动 p 米。执行此行动的球员不会移动,球将不再被持有。疲劳度增加 A × p + B。 (ii) 指定东西南北四个方向中的一个方向。向该方向移动 1 米。如果移动的球员持有球,则球和球员一起移动。无论是否有球,疲劳度增加 C。 (iii) 放下球,不再持有球。疲劳度不增加。 (iv) 持有球。疲劳度不增加。只有位于与球相同位置且没有其他人持有球的球员才能执行此操作。

请注意,球员和球可以离开球场,也可以有多个球员在同一位置。

为了使球员在训练后不积累太多疲劳度,你决定找出清理过程中球员累积的疲劳度总和的最小值。

任务

给定球场的大小和球员的位置,请编写程序计算清理过程中球员累积的疲劳度总和的最小值。

输入

从标准输入读取以下输入:

  • 第一行包含两个整数 H 和 W,以空格分隔。它们表示球场是一个纵向长度为 H 米,横向长度为 W 米的矩形。
  • 第二行包含与疲劳度增加相关的三个整数 A、B 和 C,以空格分隔。
  • 第三行包含一个整数 N,表示有 N 个球员。
  • 接下来的 N 行中,第 i 行(1iN1 \leqq i \leqq N)包含两个整数 SiS_iTiT_i,以空格分隔。它们表示球员 i 在清理开始时位于位置 (Si,Ti)(S_i, T_i)

输出

将最小值作为清理过程中球员累积的疲劳度总和输出到标准输出。

限制

所有输入数据满足以下条件:

  • 1H5001 \leqq H \leqq 500
  • 1W5001 \leqq W \leqq 500
  • 0A1,000,000,0000 \leqq A \leqq 1,000,000,000
  • 0B1,000,000,0000 \leqq B \leqq 1,000,000,000
  • 0C1,000,000,0000 \leqq C \leqq 1,000,000,000
  • 2N100,0002 \leqq N \leqq 100,000
  • 0SiH0 \leqq S i \leqq H1iN1 \leqq i \leqq N)。
  • 0TiW0 \leqq T i \leqq W