#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define pb push_back
#define mp make_pair
#define all(x) x.begin(),x.end()
int main()
{
ll t;
cin>>t;
read:
while(t--){
ll n;
cin>>n;
ll id[n+1],a[n+1];
memset(id,0,sizeof(id));
set<ll> m;
vector<ll> ans;
for(ll i=1;i<=n;i++){
cin>>a[i];
id[a[i]]++;
}
for(ll i=0;i<=n;i++){
if(!id[i]) m.insert(i);
}
ll mx=n;
while(1){
ll mex=*m.begin();
m.erase(m.begin());
id[mex]++;
if(mex!=mx){
id[a[mex+1]]--;
if(!id[a[mex+1]]) m.insert(a[mex+1]);
a[mex+1]=mex;
ans.pb(mex+1);
}
else{
if(!mex) break;
mx--;
id[a[mex]]--;
if(!id[a[mex]]) m.insert(a[mex]);
a[mex]=mex;
ans.pb(mex);
}
if(!mx) break;
}
cout<<ans.size()<<endl;
for(ll i=0;i<ans.size();i++) cout<<ans[i]<<" ";cout<<endl;
}
return 0;
}
1382A - Common Subsequence | 1512D - Corrupted Array |
667B - Coat of Anticubism | 284B - Cows and Poker Game |
1666D - Deletive Editing | 1433D - Districts Connection |
2B - The least round way | 1324A - Yet Another Tetris Problem |
246B - Increase and Decrease | 22E - Scheme |
1566A - Median Maximization | 1278A - Shuffle Hashing |
1666F - Fancy Stack | 1354A - Alarm Clock |
1543B - Customising the Track | 1337A - Ichihime and Triangle |
1366A - Shovels and Swords | 919A - Supermarket |
630C - Lucky Numbers | 1208B - Uniqueness |
1384A - Common Prefixes | 371A - K-Periodic Array |
1542A - Odd Set | 1567B - MEXor Mixup |
669A - Little Artem and Presents | 691B - s-palindrome |
851A - Arpa and a research in Mexican wave | 811A - Vladik and Courtesy |
1006B - Polycarp's Practice | 1422A - Fence |