#include <bits/stdc++.h>

#define ford(i, n) for(int i = (int)(n) - 1; i >= 0; i--)
#define forn(i, n) for(int i = 0; i < (int)(n); i++)
#define for1(i, n) for(int i = 1; i <= (int)(n); i++)
#define all(x) (x).begin(), (x).end()
#define clr(x) memset((x), 0, sizeof((x)));
#define pb push_back
#define mp make_pair
#define x first
#define y second

using namespace std;
typedef long double ld;
typedef long long ll;
typedef pair<int, int> PII;
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef long long i64;
typedef unsigned long long ull;

template<class T>
bool remin(T &a, const T &b) {
    if (a > b) {
        a = b;
        return true;
    }
    return false;
}

template<class T>
bool remax(T &a, const T &b) {
    if (a < b) {
        a = b;
        return true;
    }
    return false;
}

int nxt() {
    int x;
    scanf("%d", &x);
    return x;
}

ll gcd(ll a, ll b) {
    a = abs(a);
    b = abs(b);
    while (b) {
        a %= b;
        swap(a, b);
    }
    return a;
}

typedef ld ptdata;

struct pt {
    ptdata x, y;

    pt() {}

    pt(ptdata x, ptdata y) : x(x), y(y) {}

    inline pt operator-(const pt &r) const {
        return pt(x - r.x, y - r.y);
    }

    inline pt operator+(const pt &r) const {
        return pt(x + r.x, y + r.y);
    }

    inline pt operator*(const ptdata &r) const {
        return pt(x * r, y * r);
    }

    inline ptdata sqlen() const {
        return abs(x * x + y * y);
    }

    inline ld len() const {
        return sqrt(sqlen());
    }

    inline bool operator<(const pt &r) const {
        if (x != r.x) return x < r.x;
        return y < r.y;
    }

    inline bool operator==(const pt &r) const {
        return x == r.x && y == r.y;
    }
};

ostream &operator<<(ostream &os, const pt &p) {
    return os << "(" << p.x << "," << p.y << ")";
}

inline ptdata cross(const pt &l, const pt &r) {
    return l.x * r.y - l.y * r.x;
}

inline ptdata dot(const pt &l, const pt &r) {
    return l.x * r.x + l.y * r.y;
}


ll pwmod(ll a, ll n, ll mod) {
    ll ret = 1;
    while (n) {
        if (n & 1) ret = ret * a % mod;
        a = a * a % mod;
        n >>= 1;
    }
    return ret;
}

template<typename T>
inline T sqr(T x) {
    return x * x;
}


vector<ll> add;
int n, q;


inline void solve() {

    cin >> n >> q;
    vector<ll> lens;
    lens.push_back(n);
    forn(i, q) {
        ll a;
        cin >> a;
        if (a <= lens.back()) {
            lens.back() = a;
        } else {
            lens.push_back(a);
        }
    }
    ll mi = LLONG_MAX;
    for (int i = (int)lens.size() - 1; i >= 0; --i) {
        remin(mi, lens[i]);
        lens[i] = mi;
    }
    vector<ll> a;
    for (int i = 0; i < lens.size(); ++i) {
        if (a.empty() || a.back() < lens[i]) {
            a.push_back(lens[i]);
        }
    }
    map<ll, ll> r;
    r[0] = 1;
    for (int i = (int)a.size() - 2; i >= 0; --i) {
        if (a[i + 1] % a[i] != 0) {
            r[a[i + 1] % a[i]] += r[0];
        }
        r[0] = a[i + 1] / a[i] * r[0];
        while (true) {
            ll v = r.rbegin()->first;
            ll va= r.rbegin()->second;
            if (v < a[i]) {
                break;
            }
            r.erase(v);
            r[0] += v / a[i] * va;
            if (v % a[i]) {
                r[v % a[i]] += va;
            }
        }
    }

    add.assign(n + 1, 0);
    for (pair<ll, ll> pa : r) {
        if (pa.first == 0) {
            add[0] += pa.second;
            add[a[0]] -= pa.second;
        } else {
            add[0] += pa.second;
            add[pa.first] -= pa.second;
        }
    }
    for (int i = 1; i < add.size(); ++i) {
        add[i] += add[i - 1];
    }
    assert(add[n] == 0);
    forn(i, n) {
        cout << add[i] << "\n";
    }
}

void prepare() {

}

int main() {
#ifdef LOCAL
    freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);
#endif
    ios_base::sync_with_stdio(false);
    cin.tie(0);


    prepare();

    int t = 1;
    //cin >> t;
    //t = nxt();
    forn(i, t) {
        solve();
    }

    cerr << "Time " << clock() / (double) CLOCKS_PER_SEC << endl;
    return 0;
}


Measured memory_bytes: 9844