#include <bits/stdc++.h>
using namespace std;
const int INF = 999999999;
int v[1005];
int fr[1005];
int dp[2][50005];
signed main()
{
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    int T; cin>>T; while(T--)
    {
        int n; cin>>n;
        for(int i=1; i<=n; ++i)
        {
            cin>>v[i];
            fr[i] = 0;
        }
        for(int i=0; i<50005; ++i)
            dp[0][i] = dp[1][i] = INF;
        dp[n%2][0] = n;
        dp[n%2][v[n]] = n;
        for(int i=n-1; i>=1; --i)
        {
            int l1 = (i%2), l2 = (i+1)%2;
            for(int j=1; j<=50000; ++j)
            {
                dp[l1][j] = dp[l2][j];
                if(j >= v[i]) dp[l1][j] = min(dp[l1][j], dp[l2][j - v[i]]);
            }
            dp[l1][0] = i;
            dp[l1][v[i]] = i;
            int sum = 0;
            for(int j=i; j<=n; ++j)
            {
                sum += v[j];
                if(sum % 2 == 0 && dp[l1][sum/2] <= j)
                    ++fr[j-i+1];
            }
        }
        vector<int> res;
        for(int i=1; i<=n; ++i)
            if(fr[i] == n-i+1)
                res.push_back(i);
        cout<<res.size();
        for(auto &i : res) cout<<' '<<i;
        cout<<'\n';
    }
    return 0;
}
/*
2
7
7 3 5 1 3 3 5
6
1 2 3 5 8 3
*/
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |