#pragma GCC optimize("O3") #pragma GCC target("avx") #include <cstdio> using namespace std; int k[1<<17],x[1<<17]; const int M=1000000007; int main(){ int K,N; scanf("%d%d",&K,&N); k[0]=1; for(int i=0;i<N;i++)scanf("%d",&x[i]); for(int i=1;i<=K;i++)for(int j=0;j<N;j++){ if(i>=x[j]){ k[i]+=k[i-x[j]]; if(k[i]>=M)k[i]-=M; } } printf("%d\n",k[K]); }