/*
shool : Cu Chi High School
participant : Ngo Quoc Binh
*/
#include <bits/stdc++.h>
using namespace std;
#define debug(x) cerr << #x << " = " << x << "\n";
#define vdebug(a) cerr << #a << " = "; for(auto x : a) cout << x << " "; cout << "\n";
#define TIME cerr << "\nTime elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s\n";
#define fastIO ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define hashmap unordered_map
#define hashset unordered_set
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
#define rev(x) reverse(all(x))
#define sz(x) ((int)((x).size()))
#define max_arr(x) *max_element(all(x))
#define min_arr(x) *min_element(all(x))
#define pb push_back
#define pf push_front
#define PB pop_back
#define PF pop_front
#define en '\n'
#define ff first
#define ss second
#define task "wtf"
using ll = long long;
using ull = unsigned long long;
using ld = long double;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
void solve()
{
int x,n;
cin >> x >> n;
vector<ull> c(n);
for(int i = 0 ; i < n ; i++) cin >> c[i];
sort(all(c));
c.erase(unique(all(c)),c.end());
vector<ull> dp(x + 1,0);
dp[0] = 1;
for(ull d : c)
{
for(int res = d ; res <= x ; res++)
{
dp[res] += dp[res - d];
}
}
cout << dp[x];
}
int main()
{
fastIO
solve();
return 0;
}
LyoKICAgICAgIHNob29sIDogQ3UgQ2hpIEhpZ2ggU2Nob29sCiAgICAgICBwYXJ0aWNpcGFudCA6IE5nbyBRdW9jIEJpbmgKKi8KI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGRlYnVnKHgpIGNlcnIgPDwgI3ggPDwgIiA9ICIgPDwgeCA8PCAiXG4iOwojZGVmaW5lIHZkZWJ1ZyhhKSBjZXJyIDw8ICNhIDw8ICIgPSAiOyBmb3IoYXV0byB4IDogYSkgY291dCA8PCB4IDw8ICIgIjsgY291dCA8PCAiXG4iOwojZGVmaW5lIFRJTUUgY2VyciA8PCAiXG5UaW1lIGVsYXBzZWQ6ICIgPDwgMS4wICogY2xvY2soKSAvIENMT0NLU19QRVJfU0VDIDw8ICIgc1xuIjsKI2RlZmluZSBmYXN0SU8gaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTtjaW4udGllKDApO2NvdXQudGllKDApOwojZGVmaW5lIGhhc2htYXAgdW5vcmRlcmVkX21hcAojZGVmaW5lIGhhc2hzZXQgdW5vcmRlcmVkX3NldAojZGVmaW5lIGFsbCh4KSAoeCkuYmVnaW4oKSwoeCkuZW5kKCkKI2RlZmluZSByYWxsKHgpICh4KS5yYmVnaW4oKSwoeCkucmVuZCgpCiNkZWZpbmUgcmV2KHgpIHJldmVyc2UoYWxsKHgpKQojZGVmaW5lIHN6KHgpICgoaW50KSgoeCkuc2l6ZSgpKSkKI2RlZmluZSBtYXhfYXJyKHgpICptYXhfZWxlbWVudChhbGwoeCkpCiNkZWZpbmUgbWluX2Fycih4KSAqbWluX2VsZW1lbnQoYWxsKHgpKQoKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBwZiBwdXNoX2Zyb250CiNkZWZpbmUgUEIgcG9wX2JhY2sKI2RlZmluZSBQRiBwb3BfZnJvbnQKI2RlZmluZSBlbiAnXG4nCiNkZWZpbmUgZmYgZmlyc3QKI2RlZmluZSBzcyBzZWNvbmQKI2RlZmluZSB0YXNrICJ3dGYiCgp1c2luZyBsbCA9IGxvbmcgbG9uZzsKdXNpbmcgdWxsID0gdW5zaWduZWQgbG9uZyBsb25nOwp1c2luZyBsZCA9IGxvbmcgZG91YmxlOwoKbXQxOTkzN182NCBybmcoY2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKS5jb3VudCgpKTsKCnZvaWQgc29sdmUoKQp7CiAgICAgICAgaW50IHgsbjsKICAgICAgICBjaW4gPj4geCA+PiBuOwogICAgICAgIHZlY3Rvcjx1bGw+IGMobik7CiAgICAgICAgZm9yKGludCBpID0gMCA7IGkgPCBuIDsgaSsrKSBjaW4gPj4gY1tpXTsKCiAgICAgICAgc29ydChhbGwoYykpOwogICAgICAgIGMuZXJhc2UodW5pcXVlKGFsbChjKSksYy5lbmQoKSk7CgogICAgICAgIHZlY3Rvcjx1bGw+IGRwKHggKyAxLDApOwogICAgICAgIGRwWzBdID0gMTsKICAgICAgICAKICAgICAgICBmb3IodWxsIGQgOiBjKQogICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgcmVzID0gZCA7IHJlcyA8PSB4IDsgcmVzKyspCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRwW3Jlc10gKz0gZHBbcmVzIC0gZF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBjb3V0IDw8IGRwW3hdOwp9CgppbnQgbWFpbigpCnsKICAgICAgICBmYXN0SU8KCiAgICAgICAgc29sdmUoKTsKCiAgICAgICAgcmV0dXJuIDA7Cn0=