#include using namespace std; using std::cout; using std::cin; using std::endl; using ll=long long; const ll mod=1e9+7; #define rep(i,a) for (ll i=0;i> v_mul(vector> a,vector> b){ int A=a.size(),B=a[0].size(),C=b.size(),D=b[0].size(); vector> r(A,vector(D)); for(int i=0;i> v_jyo(vector> a,int64_t N){ int m=a.size(); ll H=1; vector> r(m,vector(m,0)); for(int i=0;i0){ H*=2; if(N%H){ N-=(H/2); r=v_mul(r,a); } a=v_mul(a,a); } return r; } ll MAX_L=1e18; int MAX_N=15; // rainy ~ 雨に打たれて ~ int main() { ios::sync_with_stdio(false); cin.tie(nullptr); ll L,N,M; cin>>L>>N>>M; vector p(M); set s; int len=0; rep(i,M){ cin>>p[i]; len+=p[i]+1; } sort(p.begin(),p.end()); assert(1<=L&&L<=MAX_L); assert(1<=N&&0<=M&&M<=N&&N<=MAX_N); rep(i,M-1) assert(p[i]!=p[i+1]); len++; vector> base(len,vector(len)); int tmp=0; for(auto x:p){ rep(i,len){ if(i