import java.util.ArrayList;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Jstudy_072_847 {
boolean flgs[] = {true, true, true, true, true, true, true, true, true};
int number;
char seq[] = new char[9];
ArrayList<String> list = new ArrayList();
void inputnumber(){
String str;
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while(true){
System.out.print("数値入力(1-9)");
str = br.readLine();
System.out.println(str.length() + " " + str.compareTo("0")
+ " " + str.compareTo("a"));
if(str.length() == 1 && str.compareTo("0") > 0 && str.compareTo("a") < 0)
break;
}
number = Integer.parseInt(str);
System.out.println("number:" + number);
} catch (Exception e){
e.printStackTrace();
}
}
void makenumberstrings(int pos){
int i;
for(i = 1; i <= number; i++){
if(flgs[i - 1]){ //この数字(i)が未使用かどうか
seq[pos] = (char)(i + '0'); //未使用なら数列に加える
if(pos == number - 1){ //数列が完成した
list.add(new String(seq, 0, number));//listへ
break; //最後の数字はひとつしか無いのでループしない
}
flgs[i - 1] = false; //この数字を使用済にする
makenumberstrings(pos + 1);//次の数字を探す処理へ
flgs[i - 1] = true; //この数字を再使用可能にする
seq[pos] = 0;
}
}
}
void dispnumberstrings(){
for(String s : list)
System.out.println(s);
}
public static void main(String[] args) {
Jstudy_072_847 j = new Jstudy_072_847();
j.inputnumber();
j.makenumberstrings(0);
j.dispnumberstrings();
}
}