#include <bits/stdc++.h>
using namespace std;
#define int long long
#define nn "\n"
#define pi pair<int, int>
#define fi first
#define se second
#define lb lower_bound
#define ub upper_bound
#define eb emplace_back
#define pb push_back
#define TASK " "
#define ms(a, x) memset(a, x, sizeof(a))
#define all(a) a.begin(), a.end()
#define All(a, n) a + 1, a + 1 + n
#define LOG 19
const int INF = 1e18;
const int mod = 1e9+7;
const int N = 2e5 + 5;
int MOD = 998244353;
int bit[200000];
struct node{
int kc, u, hk;
bool operator<(const node& other) const {
return kc > other.kc;
}
};
struct edge{
int u, v, w;
friend bool operator < ( edge a, edge b){
return a.w < b.w;
}
};
void nhap(){
}
void solve(){
int n; cin >> n;
vector<int> a(n + 5);
int cnt1 = 0;
vector<int> pos, pos1;
for(int i = 1; i <= n; i++){
cin >> a[i];
if(a[i] == 1) pos.pb(i);
if(a[i] == -1) pos1.pb(i);
}
int best = 0;
int c = -1;
int l = -1, r = -1;
if(pos1.size() >= 2){
int k = pos1.back() - pos1.front() + 1;
if(k > best){
best = k;
c = 1;
l = pos1.front();
r = pos1.back();
}
}
if(!pos.empty() && !pos1.empty()){
for(int p : pos){
auto it = lb(all(pos1), p);
if(it != pos1.begin()){
int prev_neg = *prev(it);
int k = p - prev_neg + 1;
if(k > best){
best = k;
c = 2;
l = prev_neg;
r = p;
}
}
if(it != pos1.end()){
int next_neg = *it;
int k = next_neg - p + 1;
if(k > best){
best = k;
c = 2;
l = p;
r = next_neg;
}
}
}
}
if(pos.size() >= 2){
for(size_t i = 1; i < pos.size(); i++) {
int k = pos[i] - pos[i - 1] + 1;
if (k > best) {
best = k;
c = 3;
l = pos[i - 1];
r = pos[i];
}
}
}
vector<int> ans = a;
if(c == 1 || c == 2){
ans[l] = 1;
ans[r] = 1;
}
for(int i = 1; i <= n; i++){
if(ans[i] == -1) ans[i] = 0;
}
for(int i = 1; i <= n; i++){
cout << ans[i] << (i == n ? "" : " ");
}
cout << nn;
}
signed main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t;
cin >> t;
while(t--){
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgbm4gIlxuIgojZGVmaW5lIHBpIHBhaXI8aW50LCBpbnQ+CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBsYiBsb3dlcl9ib3VuZAojZGVmaW5lIHViIHVwcGVyX2JvdW5kCiNkZWZpbmUgZWIgZW1wbGFjZV9iYWNrCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgVEFTSyAiICIKCiNkZWZpbmUgbXMoYSwgeCkgbWVtc2V0KGEsIHgsIHNpemVvZihhKSkKI2RlZmluZSBhbGwoYSkgYS5iZWdpbigpLCBhLmVuZCgpCiNkZWZpbmUgQWxsKGEsIG4pIGEgKyAxLCBhICsgMSArIG4KCiNkZWZpbmUgTE9HIDE5Cgpjb25zdCBpbnQgSU5GID0gMWUxODsKY29uc3QgaW50IG1vZCA9IDFlOSs3Owpjb25zdCBpbnQgTiA9IDJlNSArIDU7CmludCBNT0QgPSA5OTgyNDQzNTM7CmludCBiaXRbMjAwMDAwXTsKCnN0cnVjdCBub2RlewoJaW50IGtjLCB1LCBoazsKCWJvb2wgb3BlcmF0b3I8KGNvbnN0IG5vZGUmIG90aGVyKSBjb25zdCB7CiAgICAgICAgcmV0dXJuIGtjID4gb3RoZXIua2M7CiAgICB9Cn07CgpzdHJ1Y3QgZWRnZXsKCWludCB1LCB2LCB3OwoJZnJpZW5kIGJvb2wgb3BlcmF0b3IgPCAoIGVkZ2UgYSwgZWRnZSBiKXsKCQlyZXR1cm4gYS53IDwgYi53OwoJfQp9OwoKdm9pZCBuaGFwKCl7Cgp9Cgp2b2lkIHNvbHZlKCl7CiAgICBpbnQgbjsgY2luID4+IG47CiAgICB2ZWN0b3I8aW50PiBhKG4gKyA1KTsKICAgIGludCBjbnQxID0gMDsKICAgIHZlY3RvcjxpbnQ+IHBvcywgcG9zMTsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKICAgICAgICBjaW4gPj4gYVtpXTsKICAgICAgICBpZihhW2ldID09IDEpIHBvcy5wYihpKTsKICAgICAgICBpZihhW2ldID09IC0xKSBwb3MxLnBiKGkpOwogICAgfQogICAgaW50IGJlc3QgPSAwOwogICAgaW50IGMgPSAtMTsKICAgIGludCBsID0gLTEsIHIgPSAtMTsKICAgIGlmKHBvczEuc2l6ZSgpID49IDIpewogICAgICAgIGludCBrID0gcG9zMS5iYWNrKCkgLSBwb3MxLmZyb250KCkgKyAxOwogICAgICAgIGlmKGsgPiBiZXN0KXsKICAgICAgICAgICAgYmVzdCA9IGs7CiAgICAgICAgICAgIGMgPSAxOwogICAgICAgICAgICBsID0gcG9zMS5mcm9udCgpOwogICAgICAgICAgICByID0gcG9zMS5iYWNrKCk7CiAgICAgICAgfQogICAgfQogICAgaWYoIXBvcy5lbXB0eSgpICYmICFwb3MxLmVtcHR5KCkpewogICAgICAgIGZvcihpbnQgcCA6IHBvcyl7CiAgICAgICAgICAgIGF1dG8gaXQgPSBsYihhbGwocG9zMSksIHApOwogICAgICAgICAgICBpZihpdCAhPSBwb3MxLmJlZ2luKCkpewogICAgICAgICAgICAgICAgaW50IHByZXZfbmVnID0gKnByZXYoaXQpOwogICAgICAgICAgICAgICAgaW50IGsgPSBwIC0gcHJldl9uZWcgKyAxOwogICAgICAgICAgICAgICAgaWYoayA+IGJlc3QpewogICAgICAgICAgICAgICAgICAgIGJlc3QgPSBrOwogICAgICAgICAgICAgICAgICAgIGMgPSAyOwogICAgICAgICAgICAgICAgICAgIGwgPSBwcmV2X25lZzsKICAgICAgICAgICAgICAgICAgICByID0gcDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZihpdCAhPSBwb3MxLmVuZCgpKXsKICAgICAgICAgICAgICAgIGludCBuZXh0X25lZyA9ICppdDsKICAgICAgICAgICAgICAgIGludCBrID0gbmV4dF9uZWcgLSBwICsgMTsKICAgICAgICAgICAgICAgIGlmKGsgPiBiZXN0KXsKICAgICAgICAgICAgICAgICAgICBiZXN0ID0gazsKICAgICAgICAgICAgICAgICAgICBjID0gMjsKICAgICAgICAgICAgICAgICAgICBsID0gcDsKICAgICAgICAgICAgICAgICAgICByID0gbmV4dF9uZWc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpZihwb3Muc2l6ZSgpID49IDIpewogICAgICAgIGZvcihzaXplX3QgaSA9IDE7IGkgPCBwb3Muc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgaW50IGsgPSBwb3NbaV0gLSBwb3NbaSAtIDFdICsgMTsKICAgICAgICAgICAgaWYgKGsgPiBiZXN0KSB7CiAgICAgICAgICAgICAgICBiZXN0ID0gazsKICAgICAgICAgICAgICAgIGMgPSAzOwogICAgICAgICAgICAgICAgbCA9IHBvc1tpIC0gMV07CiAgICAgICAgICAgICAgICByID0gcG9zW2ldOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgdmVjdG9yPGludD4gYW5zID0gYTsKICAgIGlmKGMgPT0gMSB8fCBjID09IDIpewogICAgICAgIGFuc1tsXSA9IDE7CiAgICAgICAgYW5zW3JdID0gMTsKICAgIH0KICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKICAgICAgICBpZihhbnNbaV0gPT0gLTEpIGFuc1tpXSA9IDA7CiAgICB9CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKyl7CiAgICAgICAgY291dCA8PCBhbnNbaV0gPDwgKGkgPT0gbiA/ICIiIDogIiAiKTsKICAgIH0KICAgIGNvdXQgPDwgbm47Cn0KCnNpZ25lZCBtYWluKCkgewoJaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKCWNpbi50aWUoMCk7Cgljb3V0LnRpZSgwKTsKICAgIGludCB0OwogICAgY2luID4+IHQ7CiAgICB3aGlsZSh0LS0pewogICAgICAgIHNvbHZlKCk7CiAgICB9CglyZXR1cm4gMDsKfQ==
MTAKNgoxIDAgLTEgMCAwIDEKNwowIC0xIDAgMCAxIDAgMQo1Ci0xIDAgMCAtMSAwCjQKMCAwIDAgMAoxCi0xCjYKMSAwIDEgMCAwIC0xCjcKMCAxIDAgMCAwIDEgMAo2Ci0xIC0xIC0xIC0xIC0xIC0xCjcKLTEgMCAxIC0xIDAgMCAxCjMKLTEgMCAwCg==
10
6
1 0 -1 0 0 1
7
0 -1 0 0 1 0 1
5
-1 0 0 -1 0
4
0 0 0 0
1
-1
6
1 0 1 0 0 -1
7
0 1 0 0 0 1 0
6
-1 -1 -1 -1 -1 -1
7
-1 0 1 -1 0 0 1
3
-1 0 0