题目描述
小C有一个集合S,里面的元素都是小于M的非负整数。他用程序编写了一个数
列生成器,可以生成一个长度为N的数列,数列中的每个数都属于集合S。小C用这
个生成器生成了许多这样的数列。但是小C有一个问题需要你的帮助:给定整数x,求
所有可以生成出的,且满足数列中所有数的乘积mod M的值等于x的不同的数列的有
多少个。小C认为,两个数列Ai和Bi不同,当且仅当至少存在一个整数i,满足
Ai=Bi。另外,小C认为这个问题的答案可能很大,因此他只需要你帮助他求出答案
mod1 004 535 809的值就可以了。
输入格式
第一行四个整数,N、M、x、∣S∣其中∣S∣为集合S中元素个数。
第二行,∣S∣个整数,表示集合S中的所有元素。
输出格式
一行一个整数,表示你求出的权值和mod 1 004 535 809的值。
样例
输入样例
4 3 1 2
1 2
输出样例
8
提示
【样例说明】
可以生成的满足要求的不同的数列有(1,1,1,1)、(1,1,2,2)、(1,2,1,2)、(1,2,2,1)、(2,1,1,2)、(2,1,2,1)、(2,2,1,1)、(2,2,2,2)。
【数据规模和约定】
对于10%的数据,1≤N≤1000;
对于30%的数据,3≤M≤100;
对于60%的数据,3≤M≤800;
对于全部的数据,1≤N≤109,3≤M≤8000,M为质数,1≤x≤M−1,输人数据保证
集合S中元素不重复。