#pragma GCC optimize(2)
#include <bits/stdc++.h>
#define debug(x) cout<<#x<<":"<<x<<endl;
typedef  long long ll;
using namespace std;
#define rep(i,j,n) for(ll i=j;i<=n;i++)
#define per(i,j,n) for(ll i=j;i>=n;i--)
#define pr(x) printf("%lld\n",x) 
#define pb(x) push_back(x)
typedef unsigned long long ull;
typedef unsigned int us;
const ll INF=1e18+7;const double eps=1e-8,pi=acos(-1);
const ll mod=998244353;
const ll maxx=1e6+700;
inline bool read(ll &num){char in;bool IsN=false;in=getchar();if(in==EOF) return false;while(in!='-'&&(in<'0'||in>'9')) in=getchar();if(in=='-'){ IsN=true;num=0;}else num=in-'0';while(in=getchar(),in>='0'&&in<='9'){num*=10,num+=in-'0';}if(IsN) num=-num;return true;}
ll n,m;
ll a[maxx];
ll b[maxx];
ll sum[maxx];
struct stu
{
	ll id,a;
}A[maxx];
int cmp(stu a,stu b)
{
	if(a.a==b.a) return a.id<b.id;
	return a.a<b.a;
}
int main()
{
    ll t;
    cin>>t;
	while(t--)
    {
    	cin>>n;
    	rep(i,1,n) read(a[i]);
    	rep(i,1,n)
    	{
    		A[i].id=i;
    		A[i].a=a[i];
		}
    	sort(A+1,A+1+n,cmp);
    	rep(i,0,n+100) sum[i]=0;
    	rep(i,1,n)
    	{
    		sum[i]=sum[i-1]+A[i].a;
		}
		ll ans=0;
		ll cnt=0;
		for(ll i=n;i>=1;i--)
		{
			b[++cnt]=A[i].id;
			ans++;
			if(A[i].a>sum[i-1]) break;
		}
		sort(b+1,b+1+cnt);
		pr(cnt);
		
    	rep(i,1,cnt)
		{
			if(i!=cnt)
			printf("%lld ",b[i]);
			else pr(b[i]);
		}
  	
	}
   	
	return 0;
}
/*


*/
