#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define ll long long
#define ull unsigned long long
#define pll pair<ll,ll>
#define pb push_back
#define emb emplace_back
#define lg(x) __lg(x)
#define all(s) s.begin(),s.end()
#define name "test"
#define Mask(i) (1LL<<i)
#define testbit(mask, i) ((mask >> i) & 1LL)
#define onBit(mask, i) (mask | (1LL << i))
#define offBit(mask, i) (mask & ~(1LL << i))
#define flipBit(mask, i) (mask ^ (1LL << i))
#define showbit(mask, x) bitset<x>(mask)
const ll mod = 1e9 + 7;
void add(ll &a, ll b){
if((a += b) >= mod) a -= mod;
}
const ll inf = 1e18;
const ll lim = 1e7 + 5;
const ll N = 2e5 + 5;
int a[15];
bool check[1000005];
int d[1000005];
ll dp[1000005];
int main()
{
ios_base::sync_with_stdio(0);
cout.tie(0);cin.tie(0);
int n, k; cin >> n >> k;
for(int i = 1; i <= k; i++) cin >> a[i];
int cnt = 1;
for(int i = 1; i <= k; i++){
int num = a[i];
for(int j = 1; j <= sqrt(num); j++){
if(num % j == 0){
if(check[j] == false){
check[j] = true;
d[cnt] = j;
cnt++;
}
if(num / j != j){
if(check[num / j] == false){
check[num / j] = true;
d[cnt] = num / j;
cnt++;
}
}
}
}
}
cnt--;
// for(int i = 1; i <= cnt; i++) cout << d[i] << " ";
dp[1] = 1;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= cnt; j++){
int jump = d[j];
dp[i + jump] = (dp[i + jump] + dp[i]) % mod;
}
}
cout << dp[n];
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIHVsbCB1bnNpZ25lZCBsb25nIGxvbmcKI2RlZmluZSBwbGwgcGFpcjxsbCxsbD4KI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBlbWIgZW1wbGFjZV9iYWNrCiNkZWZpbmUgbGcoeCkgX19sZyh4KQojZGVmaW5lIGFsbChzKSBzLmJlZ2luKCkscy5lbmQoKQojZGVmaW5lIG5hbWUgInRlc3QiCiNkZWZpbmUgTWFzayhpKSAoMUxMPDxpKQojZGVmaW5lIHRlc3RiaXQobWFzaywgaSkgKChtYXNrID4+IGkpICYgMUxMKQojZGVmaW5lIG9uQml0KG1hc2ssIGkpIChtYXNrIHwgKDFMTCA8PCBpKSkKI2RlZmluZSBvZmZCaXQobWFzaywgaSkgKG1hc2sgJiB+KDFMTCA8PCBpKSkKI2RlZmluZSBmbGlwQml0KG1hc2ssIGkpIChtYXNrIF4gKDFMTCA8PCBpKSkKI2RlZmluZSBzaG93Yml0KG1hc2ssIHgpIGJpdHNldDx4PihtYXNrKQpjb25zdCBsbCBtb2QgPSAxZTkgKyA3OwoKdm9pZCBhZGQobGwgJmEsIGxsIGIpewogICAgIGlmKChhICs9IGIpID49IG1vZCkgYSAtPSBtb2Q7Cn0KCgpjb25zdCBsbCBpbmYgPSAxZTE4Owpjb25zdCBsbCBsaW0gPSAxZTcgKyA1Owpjb25zdCBsbCBOID0gMmU1ICsgNTsKCmludCBhWzE1XTsKYm9vbCBjaGVja1sxMDAwMDA1XTsKCmludCBkWzEwMDAwMDVdOwpsbCBkcFsxMDAwMDA1XTsKaW50IG1haW4oKQp7CiAgICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgICBjb3V0LnRpZSgwKTtjaW4udGllKDApOwoKICAgICBpbnQgbiwgazsgY2luID4+IG4gPj4gazsKICAgICBmb3IoaW50IGkgPSAxOyBpIDw9IGs7IGkrKykgY2luID4+IGFbaV07CgogICAgIGludCBjbnQgPSAxOwogICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gazsgaSsrKXsKICAgICAgICAgIGludCBudW0gPSBhW2ldOwogICAgICAgICAgZm9yKGludCBqID0gMTsgaiA8PSBzcXJ0KG51bSk7IGorKyl7CiAgICAgICAgICAgICAgIGlmKG51bSAlIGogPT0gMCl7CiAgICAgICAgICAgICAgICAgICAgaWYoY2hlY2tbal0gPT0gZmFsc2UpewogICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tbal0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgZFtjbnRdID0gajsKICAgICAgICAgICAgICAgICAgICAgICAgIGNudCsrOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYobnVtIC8gaiAhPSBqKXsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNoZWNrW251bSAvIGpdID09IGZhbHNlKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tbbnVtIC8gal0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkW2NudF0gPSBudW0gLyBqOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbnQrKzsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICB9CiAgICAgY250LS07Ci8vICAgICBmb3IoaW50IGkgPSAxOyBpIDw9IGNudDsgaSsrKSBjb3V0IDw8IGRbaV0gPDwgIiAiOwoKICAgICBkcFsxXSA9IDE7CiAgICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspewogICAgICAgICAgZm9yKGludCBqID0gMTsgaiA8PSBjbnQ7IGorKyl7CiAgICAgICAgICAgICAgIGludCBqdW1wID0gZFtqXTsKCiAgICAgICAgICAgICAgIGRwW2kgKyBqdW1wXSA9IChkcFtpICsganVtcF0gKyBkcFtpXSkgJSBtb2Q7CiAgICAgICAgICB9CiAgICAgfQoKICAgICBjb3V0IDw8IGRwW25dOwp9CgoKCgoKCgoKCgo=