#include <iostream>
#include <stack>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
// your code goes here
int T;
cin>>T;
while(T--){
int N;
cin>>N;
int temp;
vector <int> v;
for(int i=0;i<N;i++){
cin>>temp;
v.push_back(temp);
}
int k=N-2;
for(k;v[k]>=v[k+1];k--){}
// if the array is in decreasing order than next permutation can not be done
if(k==(-1)){
cout<<k<<endl;
continue;
}
int i=N-2;
int last = v[N-1];
stack <int> st;
st.push(last);
v.pop_back();
// pushing into the stack until we find a break point
// that is starting from the last element of the array to the element which is
// less than the previous element (the element on the right of it)
for(i;i>=0;i--){
if(v[i]<st.top()){
temp = v[i];
st.push(v[i]);
v.pop_back();
break;
}
else{
st.push(v[i]);
v.pop_back();
}
}
// making a temparary array to store elements from the stack
vector <int> v4u;
while(!st.empty()){
v4u.push_back(st.top());
st.pop();
}
// sorting the array to get the next element for the breakpoint element
// which we have stored in temp
sort(v4u.begin(),v4u.end());
int pos;
int s = v4u.size();
// we need to find the position of breakpoint element so we can swap it with
// the last element in the main array i.e. v
for(int i=0;i<s;i++){
if(temp<v4u[i]){
pos=i;
break;
}
}
swap(v4u[0],v4u[pos]);
sort(v4u.begin()+1, v4u.end());
for(int i=0;i<s;i++){
v.push_back(v4u[i]);
}
for(int j=0;j<N;j++){
cout<<v[j];
}
cout<<endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RhY2s+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxhbGdvcml0aG0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCWludCBUOwoJY2luPj5UOwoJd2hpbGUoVC0tKXsKCQlpbnQgTjsKCQljaW4+Pk47CgkJaW50IHRlbXA7CgkJdmVjdG9yIDxpbnQ+IHY7CgkJZm9yKGludCBpPTA7aTxOO2krKyl7CgkJCWNpbj4+dGVtcDsKCQkJdi5wdXNoX2JhY2sodGVtcCk7CgkJfQoJCWludCBrPU4tMjsKCQlmb3Ioazt2W2tdPj12W2srMV07ay0tKXt9CgkJLy8gaWYgdGhlIGFycmF5IGlzIGluIGRlY3JlYXNpbmcgb3JkZXIgdGhhbiBuZXh0IHBlcm11dGF0aW9uIGNhbiBub3QgYmUgZG9uZQoJCWlmKGs9PSgtMSkpewoJCSAgICBjb3V0PDxrPDxlbmRsOwoJCSAgICBjb250aW51ZTsKCQl9CgkJaW50IGk9Ti0yOwoJCWludCBsYXN0ID0gdltOLTFdOwoJCXN0YWNrIDxpbnQ+IHN0OwoJCXN0LnB1c2gobGFzdCk7CgkJdi5wb3BfYmFjaygpOwoJCS8vIHB1c2hpbmcgaW50byB0aGUgc3RhY2sgdW50aWwgd2UgZmluZCBhIGJyZWFrIHBvaW50IAoJCS8vIHRoYXQgaXMgc3RhcnRpbmcgZnJvbSB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBhcnJheSB0byB0aGUgZWxlbWVudCB3aGljaCBpcyAKCQkvLyBsZXNzIHRoYW4gdGhlIHByZXZpb3VzIGVsZW1lbnQgKHRoZSBlbGVtZW50IG9uIHRoZSByaWdodCBvZiBpdCkKCQlmb3IoaTtpPj0wO2ktLSl7CgkJCWlmKHZbaV08c3QudG9wKCkpewoJCQkgICAgdGVtcCA9IHZbaV07CgkJCSAgICBzdC5wdXNoKHZbaV0pOwoJCQkgICAgdi5wb3BfYmFjaygpOwoJCQkgICAgYnJlYWs7CgkJCX0KCQkJZWxzZXsKCQkJICAgIHN0LnB1c2godltpXSk7CgkJCSAgICB2LnBvcF9iYWNrKCk7CgkJCX0KCQkJCgkJfQoJCS8vIG1ha2luZyBhIHRlbXBhcmFyeSBhcnJheSB0byBzdG9yZSBlbGVtZW50cyBmcm9tIHRoZSBzdGFjawoJCXZlY3RvciA8aW50PiB2NHU7CgkJd2hpbGUoIXN0LmVtcHR5KCkpewoJCQl2NHUucHVzaF9iYWNrKHN0LnRvcCgpKTsKCQkJc3QucG9wKCk7CgkJfQoJCS8vIHNvcnRpbmcgdGhlIGFycmF5IHRvIGdldCB0aGUgbmV4dCBlbGVtZW50IGZvciB0aGUgYnJlYWtwb2ludCBlbGVtZW50CgkJLy8gd2hpY2ggd2UgaGF2ZSBzdG9yZWQgaW4gdGVtcAoJCXNvcnQodjR1LmJlZ2luKCksdjR1LmVuZCgpKTsKCQlpbnQgcG9zOwoJCWludCBzID0gdjR1LnNpemUoKTsKCQkvLyB3ZSBuZWVkIHRvIGZpbmQgdGhlIHBvc2l0aW9uIG9mIGJyZWFrcG9pbnQgZWxlbWVudCBzbyB3ZSBjYW4gc3dhcCBpdCB3aXRoIAoJCS8vIHRoZSBsYXN0IGVsZW1lbnQgaW4gdGhlIG1haW4gYXJyYXkgaS5lLiB2CgkJZm9yKGludCBpPTA7aTxzO2krKyl7CgkJICAgIGlmKHRlbXA8djR1W2ldKXsKCQkgICAgICAgIHBvcz1pOwoJCSAgICAgICAgYnJlYWs7CgkJICAgIH0KCQkgICAgCgkJfQoJCXN3YXAodjR1WzBdLHY0dVtwb3NdKTsKCQlzb3J0KHY0dS5iZWdpbigpKzEsIHY0dS5lbmQoKSk7CgkJCgkJZm9yKGludCBpPTA7aTxzO2krKyl7CgkJICAgIHYucHVzaF9iYWNrKHY0dVtpXSk7CgkJfQoJCWZvcihpbnQgaj0wO2o8TjtqKyspewoJCQljb3V0PDx2W2pdOwoJCX0KCQljb3V0PDxlbmRsOwoJfQoJcmV0dXJuIDA7Cn0=