#include <bits/stdc++.h>
using namespace std;
#define int long long
const int oo = 2e5 + 3;
int t, n, q;
int a[oo];
/*
- Các giá trị XOR được phép là 3,6,9,12,15. Kết hợp nhiều thao tác,
ta tạo được mọi số 4 bit có số bit 1 chẵn.
- XOR với số có popcount chẵn không làm thay đổi tính chẵn lẻ của popcount(a[i]).
- Các số chia hết cho 3 trong đoạn [0,15] đều có popcount chẵn.
Vì vậy, phần tử có popcount lẻ không thể thỏa mãn.
- Chứng minh đạt được: Nhờ các thao tác XOR trên hai phần tử kề nhau,
ta có thể biến đổi mọi phần tử có popcount chẵn thành số chia hết cho 3.
- Có phần tử popcount lẻ: Dùng nó làm trung gian để đưa tất cả phần tử chẵn về 0.
- Tất cả đều chẵn: Đưa \(n-2\) phần tử về 0, sau đó biến hai phần tử cuối thành các bội của 3.
- Kết luận: Đáp án là số lượng phần tử có popcount chẵn.
- Truy vấn: Khi thay a[p] = x, trừ đóng góp của giá trị cũ và cộng đóng góp của giá trị mới.
*/
bool ok(int n) {
return __builtin_popcount(n) % 2 == 0;
}
void solve() {
cin >> n >> q;
int res = 0;
for (int i = 1; i <= n; i++) {
cin >> a[i];
res += ok(a[i]);
}
cout << res <<" ";
while(q--) {
int p, x;
cin >> p >> x;
res -= ok(a[p]);
a[p] = x;
res += ok(a[p]);
cout << res <<" ";
}
cout << "\n";
}
int32_t main() {
cin >> t;
while(t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGludCBsb25nIGxvbmcKCmNvbnN0IGludCBvbyA9IDJlNSArIDM7CgppbnQgdCwgbiwgcTsKaW50IGFbb29dOwoKLyoKLSBDw6FjIGdpw6EgdHLhu4sgWE9SIMSRxrDhu6NjIHBow6lwIGzDoCAzLDYsOSwxMiwxNS4gS+G6v3QgaOG7o3Agbmhp4buBdSB0aGFvIHTDoWMsIAoJdGEgdOG6oW8gxJHGsOG7o2MgbeG7jWkgc+G7kSA0IGJpdCBjw7Mgc+G7kSBiaXQgMSBjaOG6tW4uCi0gWE9SIHbhu5tpIHPhu5EgY8OzIHBvcGNvdW50IGNo4bq1biBraMO0bmcgbMOgbSB0aGF5IMSR4buVaSB0w61uaCBjaOG6tW4gbOG6uyBj4bunYSBwb3Bjb3VudChhW2ldKS4KLSBDw6FjIHPhu5EgY2hpYSBo4bq/dCBjaG8gMyB0cm9uZyDEkW/huqFuIFswLDE1XSDEkeG7gXUgY8OzIHBvcGNvdW50IGNo4bq1bi4gCglWw6wgduG6rXksIHBo4bqnbiB04butIGPDsyBwb3Bjb3VudCBs4bq7IGtow7RuZyB0aOG7gyB0aOG7j2EgbcOjbi4KLSBDaOG7qW5nIG1pbmggxJHhuqF0IMSRxrDhu6NjOiBOaOG7nSBjw6FjIHRoYW8gdMOhYyBYT1IgdHLDqm4gaGFpIHBo4bqnbiB04butIGvhu4EgbmhhdSwgCgl0YSBjw7MgdGjhu4MgYmnhur9uIMSR4buVaSBt4buNaSBwaOG6p24gdOG7rSBjw7MgcG9wY291bnQgY2jhurVuIHRow6BuaCBz4buRIGNoaWEgaOG6v3QgY2hvIDMuCi0gQ8OzIHBo4bqnbiB04butIHBvcGNvdW50IGzhurs6IETDuW5nIG7DsyBsw6BtIHRydW5nIGdpYW4gxJHhu4MgxJHGsGEgdOG6pXQgY+G6oyBwaOG6p24gdOG7rSBjaOG6tW4gduG7gSAwLgotIFThuqV0IGPhuqMgxJHhu4F1IGNo4bq1bjogxJDGsGEgXChuLTJcKSBwaOG6p24gdOG7rSB24buBIDAsIHNhdSDEkcOzIGJp4bq/biBoYWkgcGjhuqduIHThu60gY3Xhu5FpIHRow6BuaCBjw6FjIGLhu5lpIGPhu6dhIDMuCi0gS+G6v3QgbHXhuq1uOiDEkMOhcCDDoW4gbMOgIHPhu5EgbMaw4bujbmcgcGjhuqduIHThu60gY8OzIHBvcGNvdW50IGNo4bq1bi4KCi0gVHJ1eSB24bqlbjogS2hpIHRoYXkgYVtwXSA9IHgsIHRy4burIMSRw7NuZyBnw7NwIGPhu6dhIGdpw6EgdHLhu4sgY8WpIHbDoCBj4buZbmcgxJHDs25nIGfDs3AgY+G7p2EgZ2nDoSB0cuG7iyBt4bubaS4KKi8KCmJvb2wgb2soaW50IG4pIHsKCXJldHVybiBfX2J1aWx0aW5fcG9wY291bnQobikgJSAyID09IDA7Cn0KCnZvaWQgc29sdmUoKSB7CiAgICBjaW4gPj4gbiA+PiBxOwogICAgCiAgICBpbnQgcmVzID0gMDsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgCWNpbiA+PiBhW2ldOwogICAgCXJlcyArPSBvayhhW2ldKTsKICAgIH0KICAgIAogICAgY291dCA8PCByZXMgPDwiICI7CiAgICAKICAgIHdoaWxlKHEtLSkgewogICAgCWludCBwLCB4OwogICAgCWNpbiA+PiBwID4+IHg7CiAgICAJcmVzIC09IG9rKGFbcF0pOwogICAgCWFbcF0gPSB4OwogICAgCXJlcyArPSBvayhhW3BdKTsKICAgIAkKICAgIAljb3V0IDw8IHJlcyA8PCIgIjsKICAgIH0KICAgIGNvdXQgPDwgIlxuIjsKfQoKaW50MzJfdCBtYWluKCkgewoKICAgIGNpbiA+PiB0OwogICAgCiAgICB3aGlsZSh0LS0pIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQogICAgCiAgICByZXR1cm4gMDsKfQ==