#P3733. 第1题-构造一元二次函数

第1题-构造一元二次函数

题目内容

给定一个长度为 nn 的数组 a1,a2,...,ana_1,a_2,...,a_n ,和一个整数 mm ,你需要回答 qq 次询问,每一次询问给定一个 xx ,随后,按照下方步骤进行一元二次函数的构造:

1.初始化 a=0,b=0,c=0a=0,b=0,c=0

2.遍历序列 a1,a2,...,ana_1,a_2,...,a_n ,每次遍历将 aia_i 累加到 abca、b、c 三个值中的其中任意一个值上。

3.保证 abca、b、c 都要被至少累加一次。

于是你构造出了一个二次函数 f(x)=ax2+bx+cf(x)=a·x^2+b·x+c 。对于每一个询问,请你计算出最大的 f(x)f(x) modmod mm (注意,是取模后的最大值)。

注意,每一次询问构造独立,互不干扰。

输入描述

第一次输入三个整数 n,m,q(n=3;2m648;1q100)n,m,q(n=3;2≤m≤648;1≤q≤100)

第二行输入 nn 个整数 a1,a2,...,an(1ai106)a_1,a_2,...,a_n(1≤a_i≤10^6)

第三行输入 qq 个整数 x1,x2,...,xq(0xi106)x_1,x_2,...,x_q(0≤x_i≤10^6)

输出描述

对于每一个询问,输出一个整数,表示 f(x)f(x) modmod mm 的最大值。

样例1

输入

3 4 2
1 2 5
2 0

输出

3 2