This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
// #pragma GCC optimize("Ofast, unroll-loops")
// #pragma GCC target("avx2,fma")
// #pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,sse4a,abm,mmx,avx,popcnt,tune=native")
// #pragma GCC optimize("inline")
// #pragma GCC optimize("-fgcse,-fgcse-lm")
// #pragma GCC optimize("-ftree-pre,-ftree-vrp")
// #pragma GCC optimize("-ffast-math")
// #pragma GCC optimize("-fipa-sra")
// #pragma GCC optimize("-fpeephole2")
// #pragma GCC optimize("-fsched-spec")
// #pragma GCC optimize("Ofast,no-stack-protector")
// #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,popcnt,tune=native")
// #pragma GCC optimize("unroll-loops")
#define int long long
using ll = int;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using vi = vector<int>;
using vll = vector<ll>;
using vb = vector<bool>;
using vpii = vector<pii>;
using vs = vector<string>;
#define cupsize                       \
    ios_base::sync_with_stdio(false); \
    cin.tie(nullptr);                 \
    cout.tie(nullptr);
#define pb push_back
#define st first
#define nd second
#define all(x) x.begin() + 1, x.end()
#define sz(x) (ll) x.size()
#define watch(x) (cout << #x << " == " << x << '\n')
const int maxn = 2e5 + 7;
const int maxn2 = 1e5 + 7;
const int mod = 1e9 + 7;
const int mod2 = (119 << 23) + 1; // 998244353
const int inf = 1e18;
const int iinf = 1e9;
const double eps = 1e-7;
const int block = 350;
void mtests(auto x)
{
    int tests;
    cin >> tests;
    while (tests--)
    {
        x();
    }
}
template <typename T>
void readv(vector<T> &v, int from = 0)
{
    for (size_t i = from; i < v.size(); ++i)
    {
        cin >> v[i];
    }
}
template <typename T>
void printv(vector<T> &v, int from = 0)
{
    for (size_t i = from; i < v.size(); ++i)
    {
        cout << v[i] << ' ';
    }
}
void precalc()
{
}
// int n, m;
// int a[maxn2];
// int b[maxn2];
// void solve()
// {
//     cin >> n >> m;
//     for (int i = 1; i <= n; ++i)
//     {
//         cin >> a[i];
//     }
//     for (int i = 1; i <= m; ++i)
//     {
//         cin >> b[i];
//     }
//     if (n == 1)
//     {
//         for (int mask = 0; mask < (1 << m); ++mask)
//         {
//             int sum = 0;
//             for (int i = 0; i < m; ++i)
//             {
//                 if ((1 << i) & mask)
//                 {
//                     sum += b[i + 1];
//                 }
//             }
//             if (sum == a[1])
//             {
//                 cout << "YES";
//                 return;
//             }
//         }
//         cout << "NO";
//     }
// }
// void solve()
// {
//     int n;
//     cin >> n;
//     string s;
//     cin >> s;
//     bool mark = true;
//     int cntG = 0;
//     int cntR = 0;
//     for (int i = 0; i < n; ++i)
//     {
//         if (mark && s[i] == 'Y')
//         {
//             mark = false;
//         }
//         if (s[i] == 'R')
//         {
//             cntR++;
//         }
//         else
//         {
//             cntG++;
//         }
//     }
//     if (mark)
//     {
//         if (cntG != cntR - 1 && cntR != cntG - 1)
//         {
//             cout << "-1";
//             return;
//         }
//     }
// }
bool eq(vector<int> a, int k)
{
    for (int i = 1; i + k - 1 <= a.size() - 1; ++i)
    {
        int sum = 0;
        vector<int> qqq;
        for (int j = i; j <= i + k - 1; ++j)
        {
            sum += a[j];
            qqq.pb(a[j]);
        }
        if (sum % 2 == 1)
        {
            return false;
        }
        sort(qqq.begin(), qqq.end());
        int qweqw = sum / 2;
        if (qqq[qqq.size() - 1] > qweqw)
        {
            return false;
        }
        else
        {
            return true;
        }
    }
    return false;
}
void solveq()
{
    int n;
    cin >> n;
    vector<int> a(n + 1);
    for (int i = 1; i <= n; ++i)
    {
        cin >> a[i];
    }
    vector<int> answers;
    for (int k = 1; k <= n; ++k)
    {
        if (eq(a, k))
        {
            answers.pb(k);
        }
    }
    cout << answers.size() << ' ';
    printv(answers, 0);
    cout << '\n';
}
int32_t main()
{
    cupsize;
    precalc();
    mtests(solveq);
    // solve();
}
Compilation message (stderr)
Main.cpp:49:13: warning: use of 'auto' in parameter declaration only available with '-fconcepts-ts'
   49 | void mtests(auto x)
      |             ^~~~
Main.cpp: In function 'bool eq(std::vector<long long int>, long long int)':
Main.cpp:156:31: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  156 |     for (int i = 1; i + k - 1 <= a.size() - 1; ++i)
      |                     ~~~~~~~~~~^~~~~~~~~~~~~~~| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |