#include <bits/stdc++.h>
using namespace std;
struct Node {
  int f;
  long long t, p;
} c[200010];
long long S, T, g, s[200010], x, y, l;
map<long long, bool> M;
int i, j, k, n, m, p, a[200010], Ans[200010], t;
bool b[200010];
inline long long Gcd(long long x, long long y) {
  return !y ? x : Gcd(y, x % y);
}
inline void Ex_gcd(long long a, long long b, long long& x, long long& y) {
  if (!b) {
    x = 1;
    y = 0;
    return;
  }
  Ex_gcd(b, a % b, y, x);
  y -= a / b * x;
}
inline bool Cmp(Node a, Node b) {
  if (a.t == b.t) return a.p < b.p;
  return a.t < b.t;
}
int main() {
  scanf("%I64d%d", &T, &n);
  for (i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    if (i > 1) (S += a[i]) %= T;
    s[i] = S;
    if (!M[S]) M[S] = b[i] = 1;
  }
  (S += a[1]) %= T;
  g = Gcd(S, T);
  l = T / g;
  Ex_gcd(S / g, l, x, y);
  (x += l) %= l;
  for (i = 1; i <= n; i++)
    if (b[i]) {
      c[++t].f = i;
      c[t].t = s[i] % g;
      c[t].p = x * (s[i] / g) % l;
    }
  sort(c + 1, c + t + 1, Cmp);
  for (i = 1; i <= t; i = j + 1) {
    for (j = i; j < t && c[j + 1].t == c[j].t; j++)
      ;
    for (k = i; k < j; k++) Ans[c[k].f] = c[k + 1].p - c[k].p;
    Ans[c[k].f] = c[i].p - c[k].p + l;
  }
  for (i = 1; i <= n; i++) printf("%d ", Ans[i]);
}
