#include <vector>
#include <stack>
#include <set>
#include <iostream>
#include <unordered_set>

using namespace std;

vector<bool> task(vector<int> &data) {
    int N = data.size();
    vector<bool> result(N, false);

    int temp = 0;

    for (int i = N - 1; i >= 0; i--) {
        temp = max(temp, data[i]);
        if (temp > 0) {
            result[i] = true;
        }
        temp--;
    }
    return result;
}

int main() {
    int T;
    cin >> T;
    for (int i = 0; i < T; i++) {
        int N;
        cin >> N;
        vector<int> data(N);
        for (int j = 0; j < N; j++) {
            int x;
            cin >> x;
            data[j] = x;
        }
        auto result = task(data);
        for (auto r:result) {
            printf("%d ", static_cast<int>(r));
        }
        printf("\n");
    }
}