#include <bits/stdc++.h>

using namespace std;

#define int long long
#define double long double
#define FOR(i, n) for (signed i = 0; i < n; ++i)
#define ALL(x) x.begin(), x.end()
#define RALL(x) x.rbegin(), x.rend()
#define VI vector<int>
#define VII vector<VI>
#define PII pair<int, int>
#define PPII pair<int, PII>
#define make(type, x) type x; cin >> x
#define makev(x, n) VI x(n); FOR(I, n) cin >> x[I]
#define repeat(n) for(int J = n; J; --J)

#define M7 1000000007LL
#define M9 1000000009LL
#define MFFT 998244353LL
#define INF 2000000000000000000LL

void solveForSet() {
    make(int, n);
    map<int, VI> indices;
    VI a;
    for (int i = 0; i < n; ++i) {
        make(int, t);
        indices[t].push_back(i + 1);
        a.push_back(t);
    }
    VI answers;
    for (const auto &x: indices.rbegin()->second) {
        answers.push_back(x);
    }
    sort(ALL(a));
    VI pref(n + 1);
    for (int i = 0; i < n; ++i) {
        pref[i + 1] = pref[i] + a[i];
    }
    for (int i = n - 1; i > 0; --i) {
        while (a[i - 1] == a[i])
            --i;
        if (i > 0 && pref[i] < a[i]) {
            break;
        }
        for (const auto &x: indices[a[i - 1]]) {
            answers.push_back(x);
        }
    }
    sort(ALL(answers));
    cout << answers.size() << '\n';
    for (const auto &x: answers) {
        cout << x << ' ';
    }
    cout << '\n';
}

void solve() {
    make(int, t);
    while (t--) {
        solveForSet();
    }
}

signed main(signed argc, char **argv) {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    if (argc > 1 && (string) argv[1] == "local") {
        freopen("input.txt", "r", stdin);
        freopen("output.txt", "w", stdout);
        solve();
        while (cin.peek() != EOF) {
            if (isspace(cin.peek()))
                cin.get();
            else {
                cout << '\n';
                solve();
            }
        }
    } else {
        solve();
    }
}
