bool nextpermutation(int arr[],int n)
{
if(n==1)
return false;
int i=n-2;
while(i>=0 && arr[i]>arr[i+1])
{
i--;
}
if(i==0)
return false;
else
{
auto it=upper_bound(arr+i,arr+n,arr[i]);
int index=it-arr;
swap(arr[i],arr[index]);
reverse(arr+i+1,arr+n);
return true;
}
}
void printarray(int arr[],int n)
{
for(int i=0;i<n;i++)
{
cout<<arr[i]<<" “;
}
cout<<”\n";
}
int main()
{
int t;
cin>>t;
while(t–)
{
int n;
cin>>n;
int *arr=new int[n];
for(int i=0;i<n;i++)
{
cin>>arr[i];
}
if(nextpermutation(arr,n))
{
printarray(arr,n);
}
else
{
sort(arr,arr+n);
printarray(arr,n);
}
}
}