import java.util.*;
import java.io.*;
import java.lang.*;
class Main
{
{
int t
= Integer.
parseInt(reader.
readLine()); int[] input;
for (int i = 1; i <= t; i++) {
reader.readLine();
input
= Arrays.
stream(reader.
readLine().
split(" ")).
mapToInt(Integer::parseInt
).
toArray(); System.
out.
println(nextHigherNumber
(input
)); }
}
private static long nextHigherNumber(int[] number) {
// starting from right, find the case where left number is less than right
int i;
for (i = number.length - 1; i > 0; i--) {
if (number[i - 1] < number[i]) {
break;
}
}
if (i == 0)
return -1;
i--;
// find the next higher number than number[i]
int nextMaxIdx = 0;
int leastDiff = 9-0;
int currentDiff;
for (int j = i + 1; j < number.length; j++) {
currentDiff = (number[j] - number[i]);
if (number[j] > number[i] && currentDiff<leastDiff) {
leastDiff = currentDiff;
nextMaxIdx = j;
}
}
// swap
int temp = number[i];
number[i] = number[nextMaxIdx];
number[nextMaxIdx] = temp;
// sort the rest of array
Arrays.
sort(number, i
+ 1, number.
length);
return intArrayToNumber(number);
}
private static long intArrayToNumber(int[] number) {
long result = 0L;
long placeMultiplier = 1L;
for (int i = number.length - 1; i >= 0; i--) {
result += number[i]*placeMultiplier;
placeMultiplier*=10L;
}
return result;
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5pby4qOwppbXBvcnQgamF2YS5sYW5nLio7CgpjbGFzcyBNYWluCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCUJ1ZmZlcmVkUmVhZGVyIHJlYWRlciA9IG5ldyBCdWZmZXJlZFJlYWRlcihuZXcgSW5wdXRTdHJlYW1SZWFkZXIoU3lzdGVtLmluKSk7CgkJaW50IHQgPSBJbnRlZ2VyLnBhcnNlSW50KHJlYWRlci5yZWFkTGluZSgpKTsKCQlpbnRbXSBpbnB1dDsKCQlmb3IgKGludCBpID0gMTsgaSA8PSB0OyBpKyspIHsKCQkJcmVhZGVyLnJlYWRMaW5lKCk7CgkJCWlucHV0ID0gQXJyYXlzLnN0cmVhbShyZWFkZXIucmVhZExpbmUoKS5zcGxpdCgiICIpKS5tYXBUb0ludChJbnRlZ2VyOjpwYXJzZUludCkudG9BcnJheSgpOwoJCQlTeXN0ZW0ub3V0LnByaW50bG4obmV4dEhpZ2hlck51bWJlcihpbnB1dCkpOwoJCX0KCX0KCQoJcHJpdmF0ZSBzdGF0aWMgbG9uZyBuZXh0SGlnaGVyTnVtYmVyKGludFtdIG51bWJlcikgewoJCS8vIHN0YXJ0aW5nIGZyb20gcmlnaHQsIGZpbmQgdGhlIGNhc2Ugd2hlcmUgbGVmdCBudW1iZXIgaXMgbGVzcyB0aGFuIHJpZ2h0CgkJaW50IGk7CgkJZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIHsKCQkJaWYgKG51bWJlcltpIC0gMV0gPCBudW1iZXJbaV0pIHsKCQkJCWJyZWFrOwoJCQl9CgkJfQoKCQlpZiAoaSA9PSAwKQoJCQlyZXR1cm4gLTE7CgoJCWktLTsKCQkvLyBmaW5kIHRoZSBuZXh0IGhpZ2hlciBudW1iZXIgdGhhbiBudW1iZXJbaV0KCQlpbnQgbmV4dE1heElkeCA9IDA7CgkJaW50IGxlYXN0RGlmZiA9IDktMDsKCQlpbnQgY3VycmVudERpZmY7CgkJZm9yIChpbnQgaiA9IGkgKyAxOyBqIDwgbnVtYmVyLmxlbmd0aDsgaisrKSB7CgkJCWN1cnJlbnREaWZmID0gKG51bWJlcltqXSAtIG51bWJlcltpXSk7CgkJCWlmIChudW1iZXJbal0gPiBudW1iZXJbaV0gJiYgY3VycmVudERpZmY8bGVhc3REaWZmKSB7CgkJCQlsZWFzdERpZmYgPSBjdXJyZW50RGlmZjsKCQkJCW5leHRNYXhJZHggPSBqOwoJCQl9CgkJfQoKCQkvLyBzd2FwCgkJaW50IHRlbXAgPSBudW1iZXJbaV07CgkJbnVtYmVyW2ldID0gbnVtYmVyW25leHRNYXhJZHhdOwoJCW51bWJlcltuZXh0TWF4SWR4XSA9IHRlbXA7CgoJCS8vIHNvcnQgdGhlIHJlc3Qgb2YgYXJyYXkKCQlBcnJheXMuc29ydChudW1iZXIsIGkgKyAxLCBudW1iZXIubGVuZ3RoKTsKCgkJcmV0dXJuIGludEFycmF5VG9OdW1iZXIobnVtYmVyKTsKCX0KCglwcml2YXRlIHN0YXRpYyBsb25nIGludEFycmF5VG9OdW1iZXIoaW50W10gbnVtYmVyKSB7CgkJbG9uZyByZXN1bHQgPSAwTDsKCQlsb25nIHBsYWNlTXVsdGlwbGllciA9IDFMOwoJCWZvciAoaW50IGkgPSBudW1iZXIubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKCQkJcmVzdWx0ICs9IG51bWJlcltpXSpwbGFjZU11bHRpcGxpZXI7CgkJCXBsYWNlTXVsdGlwbGllcio9MTBMOwoJCX0KCgkJcmV0dXJuIHJlc3VsdDsKCX0KfQ==