#include <iostream>
using namespace std;
const int MAX_N = 101;
const int MAX_K = 101;
int dp[101][101];
int countWaysToMakeChange(int S, int K, int denominations[]) {
for (int i = 0; i <= S; ++i) {
for (int j = 0; j < K; ++j) {
dp[i][j] = 0;
}
}
for (int i = 0; i < K; ++i) {
dp[0][i] = 1;
}
for (int i = 1; i <= S; ++i) {
for (int j = 0; j < K; ++j) {
int include{};
int exclude{};
if (i >= denominations[j]) {
include = dp[i - denominations[j]][j];
}
if (j >= 1) {
exclude = dp[i][j - 1];
}
dp[i][j] = (include + exclude) % 1000000007;
}
}
return dp[S][K - 1];
}
int main() {
int S, K;
cin >> S >> K;
int denominations[MAX_K];
for (int i = 0; i < K; ++i) {
cin >> denominations[i];
}
int ways = countWaysToMakeChange(S, K, denominations);
cout << ways << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBNQVhfTiA9IDEwMTsKY29uc3QgaW50IE1BWF9LID0gMTAxOwoKaW50IGRwWzEwMV1bMTAxXTsKCmludCBjb3VudFdheXNUb01ha2VDaGFuZ2UoaW50IFMsIGludCBLLCBpbnQgZGVub21pbmF0aW9uc1tdKSB7CiAgICBmb3IgKGludCBpID0gMDsgaSA8PSBTOyArK2kpIHsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IEs7ICsraikgewogICAgICAgICAgICBkcFtpXVtqXSA9IDA7CiAgICAgICAgfQogICAgfQoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgSzsgKytpKSB7CiAgICAgICAgZHBbMF1baV0gPSAxOwogICAgfQoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IFM7ICsraSkgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgSzsgKytqKSB7CiAgICAgICAgICAgIGludCBpbmNsdWRle307CiAgICAgICAgICAgIGludCBleGNsdWRle307CgogICAgICAgICAgICBpZiAoaSA+PSBkZW5vbWluYXRpb25zW2pdKSB7CiAgICAgICAgICAgICAgICBpbmNsdWRlID0gZHBbaSAtIGRlbm9taW5hdGlvbnNbal1dW2pdOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoaiA+PSAxKSB7CiAgICAgICAgICAgICAgICBleGNsdWRlID0gZHBbaV1baiAtIDFdOwogICAgICAgICAgICB9CgogICAgICAgICAgICBkcFtpXVtqXSA9IChpbmNsdWRlICsgZXhjbHVkZSkgJSAxMDAwMDAwMDA3OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gZHBbU11bSyAtIDFdOwp9CgppbnQgbWFpbigpIHsKICAgIGludCBTLCBLOwogICAgY2luID4+IFMgPj4gSzsKCiAgICBpbnQgZGVub21pbmF0aW9uc1tNQVhfS107CiAgICBmb3IgKGludCBpID0gMDsgaSA8IEs7ICsraSkgewogICAgICAgIGNpbiA+PiBkZW5vbWluYXRpb25zW2ldOwogICAgfQoKICAgIGludCB3YXlzID0gY291bnRXYXlzVG9NYWtlQ2hhbmdlKFMsIEssIGRlbm9taW5hdGlvbnMpOwogICAgY291dCA8PCB3YXlzIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0=