#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
#include <set>
using namespace std;
typedef long long ll;

int main() {
    int t;
    cin >> t;
    while(t--){
        ll n, find = 0, a = 0, b = 0, c = 0, d = 0, sa = 0, sb = 0, sc = 0, sd = 0;
        cin >> n;
        vector<int> v(n);
        set <int> s;
        for(int i = 0; i < n; i++){
            cin >> v[i];
            if(v[i] != 1 && v[i] != -1){
                find = i;
            }
        }
        for(int i = 0; i < find; i++){
            sa = max(0ll, sa + v[i]);
            sb = min(0ll, sb + v[i]);
            a = max(a, sa);
            b = min(b, sb);
        }
        for(int i = find + 1; i < n; i++){
            sc = max(0ll, sc + v[i]);
            sd = min(0ll, sd + v[i]);
            c = max(c, sc);
            d = min(d, sd);
        }
        for(int i = min(b, d); i <= max(a,c); i++){
            s.insert(i);
        }
        a = 0, b = 0, c = 0, d = 0, sa = 0, sb = 0, sc = 0, sd = 0;
        for(int i = find - 1; i >= 0; i--){
            sa += v[i];
            sb += v[i];
            a = max(a, sa);
            b = min(b, sb);
        }
        for(int i = find + 1; i < n; i++){
            sc += v[i];
            sd += v[i];
            c = max(c, sc);
            d = min(d, sd);
        }
        for(int i = v[find] + b + d; i <= v[find] + a + c; i++){
            s.insert(i);
        }
        cout << s.size() << endl;
        for(auto u: s)cout << u << " ";
        cout << endl;
    }
}