#include using namespace std; using ll = long long; using ld = long double; using vl = vector; template using vc = vector; template using vvc = vector>; #define eb emplace_back #define all(x) (x).begin(), (x).end() #define rep(i, n) for (ll i = 0; i < (n); i++) #define repr(i, n) for (ll i = (n)-1; i >= 0; i--) #define repe(i, l, r) for (ll i = (l); i < (r); i++) #define reper(i, l, r) for (ll i = (r)-1; i >= (l); i--) #define repa(i,n) for (auto& i: n) template inline bool chmax(T1 &a, const T2 &b) {if (a inline bool chmin(T1 &a, const T2 &b) {if (b void verr(const T& a, const N& n) { rep(i, n) cerr << a[i] << " "; cerr << "\n" << flush; } ll dbgt = 1; void err() { cerr << "passed " << dbgt++ << "\n" << flush; } template void err(H&& h,T&&... t){ cerr<< h << (sizeof...(t)?" ":"\n") << flush; if(sizeof...(t)>0) err(forward(t)...); } #endif const ll INF = 4e18; const ld EPS = 1e-11; const ld PI = acos(-1.0L); const ll MOD = 1e9 + 7; // const ll MOD = 998244353; //--------------------------------------------------------------------------------// template struct FFT { FFT(): pi(acos(-1.0L)), sz(1){} private: const long double pi; int sz; vector> tmp; vector> fft(vector> a, bool isinv = false){ int mask = sz - 1, p = 0; for (int i = sz >> 1; i >= 1; i >>= 1) { auto& cur = (p & 1) ? tmp : a; auto& nxt = (p & 1) ? a : tmp; complex e = polar(1.0L, 2 * pi * i * (isinv ? -1 : 1) / sz), w = 1; for (int j = 0; j < sz; j += i) { for (int k = 0; k < i; ++k) { nxt[j + k] = cur[(j << 1 & mask) + k] + w * cur[(((j << 1) + i) & mask) + k]; } w *= e; } ++p; } if (p & 1) swap(a, tmp); if (isinv) for (int i = 0; i < sz; ++i) a[i] /= sz; return a; } public: vector multiply(vector a, vector b) { int an = a.size(), bn = b.size(), m = an + bn - 1; sz = 1; while (m > sz) sz <<= 1; tmp.resize(sz); vector> fa(sz), fb(sz); for (int i = 0; i < an; ++i) fa[i].real(a[i]); for (int i = 0; i < bn; ++i) fb[i].real(b[i]); fa = fft(fa), fb = fft(fb); for (int i = 0; i < sz; ++i) fa[i] *= fb[i]; fa = fft(fa, true); a.resize(m); for (int i = 0; i < m; ++i) a[i] = round(fa[i].real()); return a; } }; int main() { ll N, Q; cin >> N >> Q; vl A(N), R(Q); rep(i, N) cin >> A[i]; rep(i, Q) cin >> R[i]; vl C(N); rep(i, Q) C[(R[i] == 0 ? 0 : N - R[i])]++; FFT fft; vl T = fft.multiply(C, A); repe(i, N, 2 * N - 1) T[i - N] += T[i]; rep(i, N) cout << T[i] << " "; cout << endl; }