#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<int> arr(m + 1);
vector<long long> a(m + 2);
vector<long long> k(m + 2);
long long tot_a = 0;
long long tot_k = 0;
for (int i = 1; i <= m; i++) {
cin >> arr[i];
if (arr[i] == 1) {
a[i] = i;
tot_a++;
}
else if (arr[i] == 2) {
k[i] = i;
tot_k++;
}
else if (arr[i] == 3) {
a[i] = i;
k[i] = i;
tot_k++;
tot_a++;
}
}
vector<long long> prefix_a(m + 2), prefix_k(m + 2), suffix_a(m + 2), suffix_k(m + 2);
for (int i = 1; i <= m; i++) {
prefix_a[i] = prefix_a[i - 1] + a[i];
prefix_k[i] = prefix_k[i - 1] + k[i];
}
for (int i = m; i >= 1; i--) {
suffix_a[i] = suffix_a[i + 1] + a[i];
suffix_k[i] = suffix_k[i + 1] + k[i];
}
long long x = 0;
long long y = 0;
for (int i = 1; i <= m; i++) {
if (arr[i] == 1 || arr[i] == 3) x++;
if (arr[i] == 2 || arr[i] == 3) y++;
long long left = i * x - prefix_a[i];
long long right = suffix_a[i + 1] - i * (tot_a - x);
long long r1 = left + right;
long long l = i * y - prefix_k[i];
long long r = suffix_k[i + 1] - i * (tot_k - y);
long long r2 = l + r;
cout << (long long)abs(r1 - r2) << " ";
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIAogICAgCiAgICAgICAgaW50IG4sIG07CiAgICAgICAgY2luID4+IG4gPj4gbTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgdmVjdG9yPGludD4gYXJyKG0gKyAxKTsKCiAgICAgICAgdmVjdG9yPGxvbmcgbG9uZz4gYShtICsgMik7ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgIHZlY3Rvcjxsb25nIGxvbmc+IGsobSArIDIpOwoKICAgICAgICBsb25nIGxvbmcgdG90X2EgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgbG9uZyBsb25nIHRvdF9rID0gMDsKCiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbTsgaSsrKSB7CiAgICAgICAgICAgIGNpbiA+PiBhcnJbaV07CgogICAgICAgICAgICBpZiAoYXJyW2ldID09IDEpIHsKICAgICAgICAgICAgICAgIGFbaV0gPSBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB0b3RfYSsrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKGFycltpXSA9PSAyKSB7CiAgICAgICAgICAgICAgICBrW2ldID0gaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdG90X2srKzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChhcnJbaV0gPT0gMykgewogICAgICAgICAgICAgICAgYVtpXSA9IGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGtbaV0gPSBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB0b3RfaysrOwogICAgICAgICAgICAgICAgdG90X2ErKzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgCiAgICAgICAgdmVjdG9yPGxvbmcgbG9uZz4gcHJlZml4X2EobSArIDIpLCBwcmVmaXhfayhtICsgMiksIHN1ZmZpeF9hKG0gKyAyKSwgc3VmZml4X2sobSArIDIpOwoKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBtOyBpKyspIHsKICAgICAgICAgICAgcHJlZml4X2FbaV0gPSBwcmVmaXhfYVtpIC0gMV0gKyBhW2ldOwogICAgICAgICAgICBwcmVmaXhfa1tpXSA9IHByZWZpeF9rW2kgLSAxXSArIGtbaV07CiAgICAgICAgfQogICAgICAgIGZvciAoaW50IGkgPSBtOyBpID49IDE7IGktLSkgeyAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgc3VmZml4X2FbaV0gPSBzdWZmaXhfYVtpICsgMV0gKyBhW2ldOwogICAgICAgICAgICBzdWZmaXhfa1tpXSA9IHN1ZmZpeF9rW2kgKyAxXSArIGtbaV07CiAgICAgICAgfQoKICAgICAgICBsb25nIGxvbmcgeCA9IDA7CiAgICAgICAgbG9uZyBsb25nIHkgPSAwOwoKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBtOyBpKyspIHsKCiAgICAgICAgICAgIGlmIChhcnJbaV0gPT0gMSB8fCBhcnJbaV0gPT0gMykgeCsrOyAgICAgICAgIAogICAgICAgICAgICBpZiAoYXJyW2ldID09IDIgfHwgYXJyW2ldID09IDMpIHkrKzsgICAgICAgIAoKICAgICAgICAgICAgbG9uZyBsb25nIGxlZnQgID0gaSAqIHggLSBwcmVmaXhfYVtpXTsKICAgICAgICAgICAgbG9uZyBsb25nIHJpZ2h0ID0gc3VmZml4X2FbaSArIDFdIC0gaSAqICh0b3RfYSAtIHgpOwogICAgICAgICAgICBsb25nIGxvbmcgcjEgPSBsZWZ0ICsgcmlnaHQ7CgogICAgICAgICAgICBsb25nIGxvbmcgbCA9IGkgKiB5IC0gcHJlZml4X2tbaV07ICAgICAgICAgICAgCiAgICAgICAgICAgIGxvbmcgbG9uZyByID0gc3VmZml4X2tbaSArIDFdIC0gaSAqICh0b3RfayAtIHkpOwogICAgICAgICAgICBsb25nIGxvbmcgcjIgPSBsICsgcjsKCiAgICAgICAgICAgIGNvdXQgPDwgKGxvbmcgbG9uZylhYnMocjEgLSByMikgPDwgIiAiOyAgICAKICAgICAgICAgICAgCiAKCiAgICAgCiAgICB9Cn0=