#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;
}
I2luY2x1ZGUgImJpdHMvc3RkYysrLmgiCiNkZWZpbmUgaW50IGxvbmcgbG9uZyAKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgVDsKCmludCBuOwppbnQgYVsyMDAxMTFdOwoKaW50IHN1bVsyMDAxMTFdOwppbnQgbWluTGVmdFsyMDAxMTFdOwppbnQgbWF4TGVmdFsyMDAxMTFdOwoKaW50IGdldFN1bShpbnQgTCwgaW50IFIpCiAgICB7CiAgICAgICAgcmV0dXJuIHN1bVtSXSAtIHN1bVtMIC0gMV07CiAgICB9CgppbnQgZ2V0TWF4KGludCBMLCBpbnQgUikKICAgIHsKICAgICAgICBzdW1bTCAtIDFdID0gMDsKICAgICAgICBmb3IoaW50IGkgPSBMOyBpIDw9IFI7IGkrKykgeyBzdW1baV0gPSBzdW1baS0xXSArIGFbaV07IH0KCiAgICAgICAgbWluTGVmdFtMIC0gMV0gPSAwOwogICAgICAgIGZvcihpbnQgaSA9IEw7IGkgPD0gUjsgaSsrKSB7IG1pbkxlZnRbaV0gPSBtaW4obWluTGVmdFtpLTFdLCBzdW1baV0pOyB9CgogICAgICAgIGludCBhbnMgPSAwOwogICAgICAgIGZvcihpbnQgaSA9IEw7IGkgPD0gUjsgaSsrKSB7IGFucyA9IG1heChhbnMsIHN1bVtpXSAtIG1pbkxlZnRbaV0pOyB9CgogICAgICAgIHJldHVybiBhbnM7CiAgICB9CgppbnQgZ2V0TWluKGludCBMLCBpbnQgUikKICAgIHsKICAgICAgICBzdW1bTCAtIDFdID0gMDsKICAgICAgICBmb3IoaW50IGkgPSBMOyBpIDw9IFI7IGkrKykgeyBzdW1baV0gPSBzdW1baS0xXSArIGFbaV07IH0KCiAgICAgICAgbWF4TGVmdFtMIC0gMV0gPSAwOwogICAgICAgIGZvcihpbnQgaSA9IEw7IGkgPD0gUjsgaSsrKSB7IG1heExlZnRbaV0gPSBtYXgobWF4TGVmdFtpLTFdLCBzdW1baV0pOyB9CgogICAgICAgIGludCBhbnMgPSAwOwogICAgICAgIGZvcihpbnQgaSA9IEw7IGkgPD0gUjsgaSsrKSB7IGFucyA9IG1pbihhbnMsIHN1bVtpXSAtIG1heExlZnRbaV0pOyB9CgogICAgICAgIHJldHVybiBhbnM7CiAgICB9Cgp2b2lkIHNvbHZlKCkKICAgIHsKICAgICAgICBjaW4gPj4gbjsKICAgICAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgeyBjaW4gPj4gYVtpXTsgfQoKICAgICAgICBzZXQ8aW50PiByZXM7CgogICAgICAgIGludCBwb3MgPSAtMTsKICAgICAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYgKChhW2ldICE9IC0xKSAmJiAoYVtpXSAhPSAxKSkgeyBwb3MgPSBpOyB9CiAgICAgICAgICAgIH0KCiAgICAgICAgaWYgKHBvcyA9PSAtMSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaW50IHAgPSBnZXRNaW4oMSwgbik7CiAgICAgICAgICAgICAgICBpbnQgcSA9IGdldE1heCgxLCBuKTsKICAgICAgICAgICAgICAgIGZvcihpbnQgaSA9IHA7IGkgPD0gcTsgaSsrKSB7IHJlcy5pbnNlcnQoaSk7IH0KICAgICAgICAgICAgfQogICAgICAgIGVsc2UgCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGludCBwID0gZ2V0TWluKDEsIHBvcyAtIDEpOwogICAgICAgICAgICAgICAgaW50IHEgPSBnZXRNYXgoMSwgcG9zIC0gMSk7CiAgICAgICAgICAgICAgICBmb3IoaW50IGkgPSBwOyBpIDw9IHE7IGkrKykgeyByZXMuaW5zZXJ0KGkpOyB9CgogICAgICAgICAgICAgICAgcCA9IGdldE1pbihwb3MgKyAxLCBuKTsKICAgICAgICAgICAgICAgIHEgPSBnZXRNYXgocG9zICsgMSwgbik7CiAgICAgICAgICAgICAgICBmb3IoaW50IGkgPSBwOyBpIDw9IHE7IGkrKykgeyByZXMuaW5zZXJ0KGkpOyB9CgogICAgICAgICAgICAgICAgc3VtWzBdID0gMDsKICAgICAgICAgICAgICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7IHN1bVtpXSA9IHN1bVtpLTFdICsgYVtpXTsgfQoKICAgICAgICAgICAgICAgIGludCBtaW5MID0gMCwgbWluUiA9IDA7CiAgICAgICAgICAgICAgICBmb3IoaW50IGkgPSBwb3MgLSAxOyBpID49IDE7IGktLSkgeyBtaW5MID0gbWluKG1pbkwsIGdldFN1bShpLCBwb3MgLSAxKSk7IH0KICAgICAgICAgICAgICAgIGZvcihpbnQgaSA9IHBvcyArIDE7IGkgPD0gbjsgaSsrKSB7IG1pblIgPSBtaW4obWluUiwgZ2V0U3VtKHBvcyArIDEsIGkpKTsgfQoKICAgICAgICAgICAgICAgIGludCBtYXhMID0gMCwgbWF4UiA9IDA7CiAgICAgICAgICAgICAgICBmb3IoaW50IGkgPSBwb3MgLSAxOyBpID49IDE7IGktLSkgeyBtYXhMID0gbWF4KG1heEwsIGdldFN1bShpLCBwb3MgLSAxKSk7IH0KICAgICAgICAgICAgICAgIGZvcihpbnQgaSA9IHBvcyArIDE7IGkgPD0gbjsgaSsrKSB7IG1heFIgPSBtYXgobWF4UiwgZ2V0U3VtKHBvcyArIDEsIGkpKTsgfQoKICAgICAgICAgICAgICAgIGZvcihpbnQgaSA9IGFbcG9zXSArIG1pbkwgKyBtaW5SOyBpIDw9IGFbcG9zXSArIG1heEwgKyBtYXhSOyBpKyspIHsgcmVzLmluc2VydChpKTsgfQogICAgICAgICAgICB9CgogICAgICAgIGNvdXQgPDwgcmVzLnNpemUoKSA8PCAnXG4nOwogICAgICAgIGZvcihpbnQgaSA6IHJlcykgeyBjb3V0IDw8IGkgPDwgIiAiOyB9CiAgICAgICAgY291dCA8PCAnXG4nOwogICAgfQoKaW50MzJfdCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUoTlVMTCk7CgogICAgY2luID4+IFQ7CgogICAgd2hpbGUgKFQtLSkgeyBzb2x2ZSgpOyB9CgogICAgcmV0dXJuIDA7Cn0=