    #include <bits/stdc++.h>
#include<map>
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define pb(x) emplace_back(x)
#define forn(i,N) for(int i=0;i<N;i++)
#define rep(i,N) for(int i=0;i<=N;i++)

#include<vector>
#include<set>
#define ll long long int
#define S second

using namespace std;
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using ld=long double;
using vi=vector<int>;
using vll=vector<ll>;
using vd=vector<double>;
using vvi=vector<vi>;
int ctoi(char c) {return c-'0';}
int slen(string s) {return s.length();}
int vsize(vi a) {return (int)a.size();}
int in() {int x;cin>>x;return x;}
#define fast ios_base::sync_with_stdio(false);cin.tie(NULL);
#define ld long double
// I failed countless times
// I am still failing,
// I don't know how to win but, 
// I know how to not give up ✌

typedef pair<ll,ll> pll;
typedef vector<pll> vpll;
typedef map<ll,ll> mpll;
typedef set<ll> stll;

ll n;
void kmin(ll n, ll m){
    ll val = n / m; 
    n = n - (val*m);
    ll val1 = (m-n)*(val-1)*(val)/2;
    ll val2 = n*val*(val+1)/2;
    ll val3 = val1 + val2;
    cout<<val3<<" ";
}
void kmax(ll n, ll m){
    n = n -(m-1);
    ll val = n*(n-1)/2;
    cout<<val;
    cout<<endl;
}
const int M = 1000000  ;

 
ll prime(ll x){
    for(ll i=2;i*i<=x;i++){
        if(x%i==0)return i;
    }
    return x;
}


vector<pair<ll, ll> > v;
set<ll> s;

bool check(ll x) {
	for (int i = 1; i < n; i++) {
		if (v[i].first % x != 0 && v[i].second % x != 0) {
			return 0;
		}
	}
	return 1;
}
void get_prime(ll x) {
	if (x % 2 == 0)
		s.insert(2);
	while (x % 2 == 0)x = x / 2;
	for (int i = 3; i <= sqrt(x); i += 2) {
		if (x % i == 0) {
			s.insert(i);
			while (x % i == 0)
				x = x / i;
		}
	}
	if (x > 2) {
		s.insert(x);
	}
}


vll ar[1000000];
stll cycle;
vll path;
bool vis[1000000];


 
 


 int isp(int x){
	if(x<2)return 0;
	for(int i=2;i*i<=x;i++)
		if(x%i==0)return 0;
	return 1;
}
void dfs(int n,int m,int x,int y, bool visited[105][105])
{
    if(x>=n || y>=m || x<0 || y<0 || visited[x][y])
    return;
    visited[x][y]=true;
    cout<<x+1<<" "<<y+1<<"\n";
    for(int i=0;i<n;i++)
    dfs(n,m,i,y,visited);
    for(int i=0;i<m;i++)
    dfs(n,m,x,i,visited);
}

void solve() {
    ll n,w,c=0,answer;
    cin>>n;
    answer=n;
    vll a(n),b(n);
    for(int i=0;i<n;i++){
        cin>>a[i];
        b[i]=a[i];
    }
    sort(a.begin(),a.end());
    w=a[0];
    for(int i=0;i<n-1;i++){
        c+=a[i];
        if(a[i+1]>c){
            w=a[i+1];
            answer=n-i-1;
        }
    }
    cout<<answer<<endl;
    for(int i=0;i<n;i++){
        if(b[i]>=w)
            cout<<i+1<<" ";
    }


}
int main()
{ fast;
    ll t=1;
   cin>>t;
    
    while(t--){
      
     
      solve();
      cout<<"\n";
     
    }

    return 0;
}


