/* 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[] a = {1,2,3,4};
ArrayList<int[]> list = permutations(a);
for(int[] s : list){
for(int i : s){
}
static ArrayList<int[]> permutations(int[] a) {
ArrayList<int[]> ret = new ArrayList<int[]>();
permutation(a, 0, ret);
return ret;
}
public static void permutation(int[] arr, int pos, ArrayList<int[]> list){
if(arr.length - pos == 1)
list.add(arr.clone());
else
for(int i = pos; i < arr.length; i++){
swap(arr, pos, i);
permutation(arr, pos+1, list);
swap(arr, pos, i);
}
}
public static void swap(int[] arr, int pos1, int pos2){
int h = arr[pos1];
arr[pos1] = arr[pos2];
arr[pos2] = h;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewogICAgICAgIGludFtdIGEgPSB7MSwyLDMsNH07CgkJQXJyYXlMaXN0PGludFtdPiBsaXN0ID0gcGVybXV0YXRpb25zKGEpOwoJCWZvcihpbnRbXSBzIDogbGlzdCl7CgkJZm9yKGludCBpIDogcyl7ClN5c3RlbS5vdXQucHJpbnQoaSk7fQpTeXN0ZW0ub3V0LnByaW50bG4oKTt9Cgl9CgkKCXN0YXRpYyBBcnJheUxpc3Q8aW50W10+IHBlcm11dGF0aW9ucyhpbnRbXSBhKSB7CiAgICBBcnJheUxpc3Q8aW50W10+IHJldCA9IG5ldyBBcnJheUxpc3Q8aW50W10+KCk7CiAgICBwZXJtdXRhdGlvbihhLCAwLCByZXQpOwogICAgcmV0dXJuIHJldDsKfQoKcHVibGljIHN0YXRpYyB2b2lkIHBlcm11dGF0aW9uKGludFtdIGFyciwgaW50IHBvcywgQXJyYXlMaXN0PGludFtdPiBsaXN0KXsKICAgIGlmKGFyci5sZW5ndGggLSBwb3MgPT0gMSkKICAgICAgICBsaXN0LmFkZChhcnIuY2xvbmUoKSk7CiAgICBlbHNlCiAgICAgICAgZm9yKGludCBpID0gcG9zOyBpIDwgYXJyLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgc3dhcChhcnIsIHBvcywgaSk7CiAgICAgICAgICAgIHBlcm11dGF0aW9uKGFyciwgcG9zKzEsIGxpc3QpOwogICAgICAgICAgICBzd2FwKGFyciwgcG9zLCBpKTsKICAgICAgICB9Cn0KCnB1YmxpYyBzdGF0aWMgdm9pZCBzd2FwKGludFtdIGFyciwgaW50IHBvczEsIGludCBwb3MyKXsKICAgIGludCBoID0gYXJyW3BvczFdOwogICAgYXJyW3BvczFdID0gYXJyW3BvczJdOwogICAgYXJyW3BvczJdID0gaDsKfQp9