#include "bits/stdc++.h"
#define int long long 

using namespace std;

int T;

int n;
int a[200111];

int sum[200111];
int minLeft[200111];
int maxLeft[200111];

int getSum(int L, int R)
    {
        return sum[R] - sum[L - 1];
    }

int getMax(int L, int R)
    {
        sum[L - 1] = 0;
        for(int i = L; i <= R; i++) { sum[i] = sum[i-1] + a[i]; }

        minLeft[L - 1] = 0;
        for(int i = L; i <= R; i++) { minLeft[i] = min(minLeft[i-1], sum[i]); }

        int ans = 0;
        for(int i = L; i <= R; i++) { ans = max(ans, sum[i] - minLeft[i]); }

        return ans;
    }

int getMin(int L, int R)
    {
        sum[L - 1] = 0;
        for(int i = L; i <= R; i++) { sum[i] = sum[i-1] + a[i]; }

        maxLeft[L - 1] = 0;
        for(int i = L; i <= R; i++) { maxLeft[i] = max(maxLeft[i-1], sum[i]); }

        int ans = 0;
        for(int i = L; i <= R; i++) { ans = min(ans, sum[i] - maxLeft[i]); }

        return ans;
    }

void solve()
    {
        cin >> n;
        for(int i = 1; i <= n; i++) { cin >> a[i]; }

        set<int> res;

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

        if (pos == -1)
            {
                int p = getMin(1, n);
                int q = getMax(1, n);
                for(int i = p; i <= q; i++) { res.insert(i); }
            }
        else 
            {
                int p = getMin(1, pos - 1);
                int q = getMax(1, pos - 1);
                for(int i = p; i <= q; i++) { res.insert(i); }

                p = getMin(pos + 1, n);
                q = getMax(pos + 1, n);
                for(int i = p; i <= q; i++) { res.insert(i); }

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

                int minL = 0, minR = 0;
                for(int i = pos - 1; i >= 1; i--) { minL = min(minL, getSum(i, pos - 1)); }
                for(int i = pos + 1; i <= n; i++) { minR = min(minR, getSum(pos + 1, i)); }

                int maxL = 0, maxR = 0;
                for(int i = pos - 1; i >= 1; i--) { maxL = max(maxL, getSum(i, pos - 1)); }
                for(int i = pos + 1; i <= n; i++) { maxR = max(maxR, getSum(pos + 1, i)); }

                for(int i = a[pos] + minL + minR; i <= a[pos] + maxL + maxR; i++) { res.insert(i); }
            }

        cout << res.size() << '\n';
        for(int i : res) { cout << i << " "; }
        cout << '\n';
    }

int32_t main()
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);

    cin >> T;

    while (T--) { solve(); }

    return 0;
}