/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
int[]data = {1,2,5,6,4,7};
prevPermutation(data);
}
public static void prevPermutation(int[]data){
for(int i = data.length - 2; i >= 0; i--){
if(data[i] > data[i + 1]){
int index = i + 1;
for(int j = i + 2; j < data.length; j++){
if (data[j] > data[index] && data[j] < data[i]){
index = j;
}
}
int tmp = data[i];
data[i] = data[index];
data[index] = tmp;
sortDescending(data, i + 1, data.length);
break;
}
}
}
public static void sortDescending(int[]data, int from, int to){
int l = to - from;
for(int i = 0; i < l/2; i++){
int tmp = data[i + from];
data[i + from] = data[to - i - 1];
data[to - i - 1] = tmp;
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCWludFtdZGF0YSA9IHsxLDIsNSw2LDQsN307CgkJcHJldlBlcm11dGF0aW9uKGRhdGEpOwoJCVN5c3RlbS5vdXQucHJpbnRsbihBcnJheXMudG9TdHJpbmcoZGF0YSkpOwoJfQoJcHVibGljIHN0YXRpYyB2b2lkIHByZXZQZXJtdXRhdGlvbihpbnRbXWRhdGEpewogICAgIGZvcihpbnQgaSA9IGRhdGEubGVuZ3RoIC0gMjsgaSA+PSAwOyBpLS0pewogICAgICAgICBpZihkYXRhW2ldID4gZGF0YVtpICsgMV0pewogICAgICAgICAgICBpbnQgaW5kZXggPSBpICsgMTsKICAgICAgICAgICAgZm9yKGludCBqID0gaSArIDI7IGogPCBkYXRhLmxlbmd0aDsgaisrKXsKICAgICAgICAgICAgICAgIGlmIChkYXRhW2pdID4gZGF0YVtpbmRleF0gJiYgZGF0YVtqXSA8IGRhdGFbaV0pewogICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGo7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaW50IHRtcCA9IGRhdGFbaV07CiAgICAgICAgICAgIGRhdGFbaV0gPSBkYXRhW2luZGV4XTsKICAgICAgICAgICAgZGF0YVtpbmRleF0gPSB0bXA7CiAgICAgICAgICAgIHNvcnREZXNjZW5kaW5nKGRhdGEsIGkgKyAxLCBkYXRhLmxlbmd0aCk7CiAgICAgICAgICAgIGJyZWFrOyAKICAgICAgICAgfQogICAgIH0KCgl9CglwdWJsaWMgc3RhdGljIHZvaWQgc29ydERlc2NlbmRpbmcoaW50W11kYXRhLCBpbnQgZnJvbSwgaW50IHRvKXsKCSAgICAgaW50IGwgPSB0byAtIGZyb207CgkgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBsLzI7IGkrKyl7CgkgICAgIAkgIGludCB0bXAgPSBkYXRhW2kgKyBmcm9tXTsKCSAgICAgICAgICBkYXRhW2kgKyBmcm9tXSA9IGRhdGFbdG8gLSBpIC0gMV07CgkgICAgICAgICAgZGF0YVt0byAtIGkgLSAxXSA9IHRtcDsKCSAgICAgfSAgICAgICAgIAoJfQp9