#include <iostream>
#include <fstream>
#include <istream>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <unordered_map>
#include <vector>
#include <math.h>
#include <string>
#include <algorithm>
#include <math.h>
#include <set>
#include <map>
#include <queue>
#include <algorithm>
#define ll long long 
#define mp(x,y) make_pair(x,y)
#define read(x) cin>>x;
#define read2(x,y) cin>>x>>y;
#define pb(x) push_back(x)
#define loop(start,end) for(int i = start;i<end;i++)
#define all(x) x.begin(),x.end()
#define yes "YES"
#define no "NO"
#define ipair pair<int,int>
#define allof(x) x.begin(),x.end()
 
#define yes "YES"
#define no "NO"
#define alice "Alice"
#define bob "Bob"
#define tie "Tie"
 
 
using namespace std;
int main(){
	int T;
	read(T);
	while(T--){
		int n ;
		read(n);
		vector<ipair>arr(n);
		for(int i =0 ;i<n;i++){
			int num;
			read(num);
			arr[i] = mp(num,i);
		}

		vector< pair<ll,int> > prefix(n);
		sort(all(arr));
		prefix[0] = mp(arr[0].first,0);
		for(int i = 1;i<n;i++){
			prefix[i] = mp(prefix[i-1].first + arr[i].first,i);
		}
		int ind;
		int left = 0 ,right= n-1;
		while(left<=right){
			bool flag = true;
			int mid = (left+right)/2;
			ll tmp = prefix[mid].first;
			for(int i = mid+1;i<n;i++){
				if(tmp < arr[i].first){
					flag = false;
					break;
				}else{
					tmp += arr[i].first;
				}
			}

			if(!flag){
				left = mid+1;
			}else{
				ind = mid;
				right = mid-1;
			}

		}
		vector<int>ans;
		for(int i = ind;i<n;i++){
			ans.pb(arr[i].second+1);
		}
		sort(all(ans));
		cout<<ans.size()<<endl;
		for(auto val:ans)
			cout<<val<<" ";

		cout<<endl;


	}
}