/* 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 = {5,4,3,2,3};
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[]copy
= Arrays.
copyOfRange(data, from, to
); //System.out.println(Arrays.toString(copy));
for(int i = from; i < to; i++){
//System.out.println(i + " " + (to - i));
data[i] = copy[to - i - 1];
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCWludFtdZGF0YSA9IHs1LDQsMywyLDN9OwoJCXByZXZQZXJtdXRhdGlvbihkYXRhKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oQXJyYXlzLnRvU3RyaW5nKGRhdGEpKTsKCX0KCXB1YmxpYyBzdGF0aWMgdm9pZCBwcmV2UGVybXV0YXRpb24oaW50W11kYXRhKXsKICAgICBmb3IoaW50IGkgPSBkYXRhLmxlbmd0aCAtIDI7IGkgPj0gMDsgaS0tKXsKICAgICAgICAgaWYoZGF0YVtpXSA+IGRhdGFbaSArIDFdKXsKICAgICAgICAgICAgaW50IGluZGV4ID0gaSArIDE7CiAgICAgICAgICAgIGZvcihpbnQgaiA9IGkgKyAyOyBqIDwgZGF0YS5sZW5ndGg7IGorKyl7CiAgICAgICAgICAgICAgICBpZiAoZGF0YVtqXSA+IGRhdGFbaW5kZXhdICYmIGRhdGFbal0gPCBkYXRhW2ldKXsKICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBqOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGludCB0bXAgPSBkYXRhW2ldOwogICAgICAgICAgICBkYXRhW2ldID0gZGF0YVtpbmRleF07CiAgICAgICAgICAgIGRhdGFbaW5kZXhdID0gdG1wOwogICAgICAgICAgICBzb3J0RGVzY2VuZGluZyhkYXRhLCBpICsgMSwgZGF0YS5sZW5ndGgpOwogICAgICAgICAgICBicmVhazsgCiAgICAgICAgIH0KICAgICB9CgoJfQoJcHVibGljIHN0YXRpYyB2b2lkIHNvcnREZXNjZW5kaW5nKGludFtdZGF0YSwgaW50IGZyb20sIGludCB0byl7CgkgICAgIGludFtdY29weSA9IEFycmF5cy5jb3B5T2ZSYW5nZShkYXRhLCBmcm9tLCB0byk7CgkgICAgIEFycmF5cy5zb3J0KGNvcHkpOwoJICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbihBcnJheXMudG9TdHJpbmcoY29weSkpOwoJICAgICBmb3IoaW50IGkgPSBmcm9tOyBpIDwgdG87IGkrKyl7CgkgICAgIAkgIC8vU3lzdGVtLm91dC5wcmludGxuKGkgKyAiICIgKyAodG8gLSBpKSk7CgkgICAgICAgICAgZGF0YVtpXSA9IGNvcHlbdG8gLSBpIC0gMV07CgkgICAgIH0gICAgICAgICAKCX0KfQ==