CCA的拆分
题号:NC206072
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

牛牛准备送给牛妹一条项链,但是项链太长了,于是他准备将项链拆掉。
牛妹有一些不喜欢的数,所以拆分出来的长度中一定要有至少一个不是牛妹不喜欢的(不然就送不出去了)。
注意,由于项链上的每一颗珠子都不同,所以1 5 1和1 1 5是两种不同的拆分方案,不拆也是一种方案。

输入描述:

第一行:两个数N和P。

第二行:一个数K,表示牛妹有K个不喜欢的数。

第三行:K个牛妹不喜欢的数T。

输出描述:

一个整数表示拆分方案对P取模后的值,不保证P是质数。
示例1

输入

复制
5 10007
2
2 3

输出

复制
14

备注:

对于10%的数据:N <= 10 ;

对于30%的数据:N <= 1e3;

对于100%的数据:N <= 1e18,P <= 1e9 ,K , T <= 100 。