#include<bits/stdc++.h>

#define int long long 
#define ull unsigned long long
#define df double
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define fep(i,a,b) for(int i=b;i>=a;--i)
#define scf(x) scanf("%lld",&x)
#define prf(x) printf("%lld\n",x)
#define ddprf(x,y) printf("{%d,%d}\n",x,y)
#define deprf(x) printf("[%d]\n",x)
#define dect(x) cout<<'['<<x<<']'<<endl
#define mset(x,y) memset(x,y,sizeof(x))
#define fOPEN freopen("t2.in","r",stdin);
#define AC return 0 
#define prf1(x) printf("! %d\n",x)
#define prf2(x) printf("? %d\n",x);
const int maxn=4e6+10;
const int inf=0x3f3f3f3f;

//ll gcd(ll a,ll b){return !a?b:gcd(b%a,a);}
//int f[maxn];
//int fid(int x){return f[x]==x?x:f[x]=fid(f[x]);}
const int mod=1e9+7;
const double eps=1e-7;
using namespace std;
int a[maxn],pre[maxn];
struct node
{
	int x,pos;
	bool operator<(const node b)const
	{
		return x<b.x;
	}
}la[maxn];
bool v[maxn];
void solve()
{
	mset(v,0);
	int n;
	scf(n);
	rep(i,1,n)scf(la[i].x),la[i].pos=i;
	sort(la+1,la+1+n);
	rep(i,1,n)pre[i]=pre[i-1]+la[i].x;	
	int p=0,ans=0;
	la[n+1].x=0;
	fep(i,1,n)if(pre[i-1]+la[i].x>=la[i+1].x)
	{
		v[la[i].pos]=1;
		ans++;
	}
	else break;
	prf(ans);
	rep(i,1,n)if(v[i])printf("%lld ",i);
	puts("");
}
signed main()
{
	int t;
	scf(t);
	while(t--)solve();
	return 0;
}
