#include using namespace std; using int64 = long long; int N, M, X[5]; unordered_map< int, int64 > dp; const int64 mod = 100000000000000007; int main() { cin >> N >> M; for(int i = 0; i < M; i++) cin >> X[i]; dp[0] = 1; for(int k = 0; k < N; k++) { if(dp.count(k)) { for(int i = 0; i < M; i++) { if(k + X[i] < N) { dp[k + X[i]] += dp[k]; if(dp[k + X[i]] >= mod) dp[k + X[i]] -= mod; } } if(k == N - 1) { cout << dp[N - 1] << endl; return 0; } dp.erase(k); } if(k == N - 1) { cout << dp[N - 1] << endl; return 0; } } }