import Prog1Tools.IOTools;
public class Permdru{  
 //
 //
 // Die folgende Prozedur bewirkt die Ausgabe von
 // allen Permutationen der Art 
 // x[0], x[1], x[2],...,. x[d-1] fest bleibend, 
 // gefolgt von allen Permutationen 
 // von x[d], x[d+1],..., x[x.length-1]. 
 // Dabei ist d >= x.length. Bei d == x.length 
 // haben wir dann nur noch eine Permuation.  
 //
 //
 public static void Perm(int[ ] x, int d){   
 // 
     if (d == x.length ) { // Nicht  d == x.length - 1!!
     Ausgabe(x);
     return;}
     //
     //
     int i = d, b;  // Hier ist d <= x.length - 1!
     //
     //
     while  (i < x.length) {
     //
     b = x[i];     // x[d] und x[i] vertauschen.
     x[i] = x[d];
     x[d] = b;
     //
     Perm(x, d+1);
     //
     b = x[i];    // x[i] und x[d] (zurueck-)vertauschen. 
     x[i] = x[d];
     x[d] = b;
     //
     //
     //
     i++;
     }   
       }
 //
 //
 //
 public static void Ausgabe(int[  ] x) {
 int i = 0;
 while (i < x.length) {
    System.out.print(x[i]);
    i++; 
    }
 System.out.println( );     
 }     
  //
  //
  //
  //
  // Die Deklarationen  enden.
  //
  //
  //
  public static void main(String[] args) {
  //
  int n, i= 0;
  int[ ] x;
  //
  //  
  //
  n = IOTools.readInteger("n einlesen " );
  x = new int[n];
  //
  while (i< x.length){
  x[i] = i+1;
  i++; }
  //
  // Initialisierung der lokalen Variablen beendet. 
  //
  Perm(x, 0);
  //
   }
  }
