#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

void solve(int n, vector<int>& a) {
    vector<int> vec1;
    for (int i = 0; i < n; i++) {
        if (a[i] == 1) {
            vec1.push_back(i);
        }
    }

    int bestLen = 0;
    int bestL = -1, bestR = -1;

    // Check if at least a single 1 is possible (score >= 1)
    for (int i = 0; i < n; i++) {
        if (a[i] != 0) {
            bestLen = 1;
            bestL = i;
            bestR = i;
            break;
        }
    }

    auto update = [&](int l, int r) {
        if (l != -1 && r != -1 && l < r) {
            int len = r - l + 1;
            if (len > bestLen) {
                bestLen = len;
                bestL = l;
                bestR = r;
            }
        }
    };

    if (vec1.empty()) {
        int first = -1, last = -1;
        for (int i = 0; i < n; i++) {
            if (a[i] != 0) {
                if (first == -1) first = i;
                last = i;
            }
        }
        update(first, last);
    } else {
        for (size_t i = 0; i + 1 < vec1.size(); i++) {
            update(vec1[i], vec1[i + 1]);
        }

        int first_avail = -1;
        for (int i = 0; i < vec1[0]; i++) {
            if (a[i] != 0) {
                first_avail = i;
                break;
            }
        }
        update(first_avail, vec1[0]);

        int last_avail = -1;
        for (int i = n - 1; i > vec1.back(); i--) {
            if (a[i] != 0) {
                last_avail = i;
                break;
            }
        }
        update(vec1.back(), last_avail);
    }

    if (bestL != -1) a[bestL] = 1;
    if (bestR != -1) a[bestR] = 1;

    for (int i = 0; i < n; i++) {
        if (a[i] == -1) {
            a[i] = 0;
        }
    }

    for (int i = 0; i < n; i++) {
        cout << a[i] << (i + 1 == n ? "" : " ");
    }
    cout << '\n';
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int T;
    cin >> T;

    while (T--) {
        int n;
        cin >> n;

        vector<int> a(n);
        for (auto &x : a)
            cin >> x;

        solve(n, a);
    }

    return 0;
}