/************************************************
Grundlegende Algorithmen mit Java,
http://algorithmen-und-problemloesungen.de/
Copyright @2007-2008 by Doina Logofatu
************************************************/

import java.io.*;
import java.util.*;

public class P07Referat {
  private static final String FileOutputName = "referat.out";

  public static void main(String[] args) throws IOException {
    PrintStream out = new PrintStream(new File(FileOutputName));
    try {
      Scanner sc = new Scanner(System.in);
      System.out.print(" n = ");
      if (!sc.hasNextInt()) {
        return;
      }
      int n = sc.nextInt();
      System.out.print(" m = ");
      if (!sc.hasNextInt()) {
        return;
      }
      int m = sc.nextInt();
      int x[] = new int[n];
      int xIdx = 0;
      int vMark[] = new int[n];
      x[0] = -1;
      int noSol = 0;
      while (xIdx >= 0) {
        int k = xIdx;
        boolean flag = false;
        while (!flag && x[k] < m - 1) {
          if (x[k] >= 0)
            vMark[x[k]]--;
          vMark[++x[k]]++;
          flag = true;
          int noMarked = 0;
          for (int i = 0; i <= k; i++)
            if (vMark[i] != 0)
              noMarked++;
          if (noMarked + n - 1 - k < m)
            flag = false;
        }
        if (flag) {
          if (k == n - 1) {
            for (int i : x) {
              out.print(i + 1);
              out.print(' ');
            }
            out.println();
            noSol++;
          } else
            x[++xIdx] = -1;
        } else {
          if (x[k] >= 0)
            vMark[x[k]]--;
          xIdx--;
        }

      }
      out.print("Anzahl der Loesungen =  ");
      out.print(noSol);
    } finally {
      out.close();
    }
  }
}

