智乃的罗德岛基建
题号:NC271653
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述



智乃在罗德岛上建造了M贸易站来生产龙门币,编号1M

贸易站有两个属性,贸易等级L_i和贸易点数P_i,每个贸易站每天生产的龙门币为A\cdot L_{i}^2+B \cdot P_{i}+C

对于等级为x的贸易站,任意时刻,当它的贸易点数P_i大于等于x+1时,立刻消耗x+1个贸易点数,升级到第x+1个等级。

一开始,所有贸易站的初始的贸易等级L_i、贸易点数P_i都为0

智乃在第y天开始时,会首先选择所有编号是y的因子的贸易站提升一点贸易点数,即\forall d|y ,P_{d}:=P_{d}+1,再生产龙门币,例如智乃在第1天提升第1个贸易站,第2天提升第1,2个贸易站,第3天提升第1,3个贸易站,第4天提升第1,2,4个贸易站

假如贸易站在每天升级完成后才会生产龙门币,智乃想知道第1天到第N天所有贸易站生产龙门币的总和是多少,请输出答案对10^9+9取余数后的结果。

输入描述:

仅一行五个正整数N,M,A,B,C(1\leq N,M \leq 10^{12},1\leq A,B,C \leq 10^{9})

输出描述:

仅一行一个非负整数,表示问题的答案。
示例1

输入

复制
3 5 10 1 1

输出

复制
106

说明

一开始,所有贸易站的等级都是0,贸易点数也为0,表示为(0,0)
1天贸易站的等级如下:
[(1,0),(0,0),(0,0),(0,0),(0,0)]
生产共15龙门币
2天贸易站的等级如下:
[(1,1),(1,0),(0,0),(0,0),(0,0)]
生产共26龙门币
3天贸易站的等级如下:
[(2,0),(1,0),(1,0),(0,0),(0,0)]
生产共65龙门币
总共106龙门币

示例2

输入

复制
1000000000 100 1 2 2

输出

复制
424110313