本题的关键在于:由于 n=3 且要求 a,b,c 三个变量都至少被累加一次,因此三次累加恰好分别落在 a,b,c 上——也就是把 (a1,a2,a3) 以某种排列分配为 (p,q,r),得到
f(x)=p⋅x2+q⋅x+r,其中 (p,q,r) 是 (a1,a2,a3) 的六种排列之一。
给定一个长度为 n 的数组 a1,a2,...,an ,和一个整数 m ,你需要回答 q 次询问,每一次询问给定一个 x ,随后,按照下方步骤进行一元二次函数的构造:
1.初始化 a=0,b=0,c=0 。
2.遍历序列 a1,a2,...,an ,每次遍历将 ai 累加到 a、b、c 三个值中的其中任意一个值上。
3.保证 a、b、c 都要被至少累加一次。
于是你构造出了一个二次函数 f(x)=a⋅x2+b⋅x+c 。对于每一个询问,请你计算出最大的 f(x) mod m (注意,是取模后的最大值)。
注意,每一次询问构造独立,互不干扰。
第一次输入三个整数 n,m,q(n=3;2≤m≤648;1≤q≤100) 。
第二行输入 n 个整数 a1,a2,...,an(1≤ai≤106) 。
第三行输入 q 个整数 x1,x2,...,xq(0≤xi≤106) 。
对于每一个询问,输出一个整数,表示 f(x) mod m 的最大值。
输入
3 4 2
1 2 5
2 0
输出
3 2