#M260523. 创建表达式

创建表达式

题目描述

小Z想把若干个 1 使用加法、乘法两种规则拼接为一个表达式,其中使用一次加法的花费为 b,使用一次乘法的代价为 c,使用单独一个数字 1 也需要花费 a

求得可以使表达式结果为 i 的最小花费。

例如,((1+1)×(1+1))×(1+1)\tt(( 1 + 1) × (1 + 1)) × (1 + 1) 是代价为 6a+3b+2c6a+3b+2c,求值结果为 88 的表达式。

输入格式

一行四个正整数 n,a,b,cn,a,b,c1n30001\le n\le 3\, 0001a,b,c1091\le a,b,c\le10^9)。分别表示初始 1 的最大个数、三种操作的相应花费。

输出格式

nn 个正整数,第 ii 个正整数表示求值结果为 ii 的表达式的最小代价。

输入输出样例

6 1 4 2
1 6 11 14 19 19

样例 #1\tt \#1说明

下表展示了可以得到 161\sim 6 的最小代价的表达式。

求值结果 表达式 代价
11 1\tt 1 a=1a = 1
22 (1+1)\tt (1+1) 2a+b=2+4=62a + b = 2 + 4 = 6
33 ((1+1)+1)\tt ((1+1)+1) 3a+2b=3+8=113a + 2b = 3 + 8 = 11
44 ((1+1)(1+1))\tt ((1+1)*(1+1)) 4a+2b+c=4+8+2=144a + 2b + c = 4 + 8 + 2 = 14
55 (((1+1)(1+1))+1)\tt (((1+1)*(1+1))+1) 5a+3b+c=5+12+2=195a + 3b + c = 5 + 12 + 2 = 19
66 ((1+1)((1+1)+1))\tt ((1+1)*((1+1)+1))

数据范围

本题采用捆绑测试。

子任务编号 限制 得分
11 n10n \le 10 1010
22 n200n \le 200 3030
33 a=b=c=1a = b = c = 1 1010
44 无额外限制 5050