#include <stdio.h>
// prototype
int lcm(int , int);
int ncr(int , int );

int lcm(int a, int b)
{
  while (a % b) {
    int t = a % b;
    a = b;
    b = t;
  }
  return b;
}

int ncr(int n, int r)
{
  int a = 1, b = 1;
  while (r) {
    a *= n--;
    b *= r--;
    int t = lcm(a , b);
    a /= t;
    b /= t;
  }
  return a / b;
}

int calc1(int *a, int n, int r)
{
  int sum = 0, j = 1;
  for (int i = 0; i < r; ++i) {
    for (; j < *a; ++j)sum += ncr(43 - j , r - 1 - i);
    j = *a++ + 1;
  }
  sum += ncr(0, 0);
  printf("%d\n", sum);
  return sum;
}

int calc2(int a, int n, int r)
{
  printf("\n%d\t", a);
  int j = 1;
  while (r > 0) {
    int t = ncr(n - 1, r - 1);
    if (t < a) {
      a -= t;
      ++j;
      --n;
    } else {
      printf("%d,", j);
      --n;
      ++j;
      --r;
    }
  }
  return 0;
}

int main(int argc, char const *argv[])
{
  int n, r, a[100], i;
  FILE *fpi;
  sscanf(argv[1], "%d,%d", &n, &r);
  if (argv[2][0] == 'r') {
    fpi = fopen(argv[3], "r");
    i = 0;
    while (fscanf(fpi, "%d,", a + i) != EOF) {
      if (++i == r) {
        calc1(a, n, r);
        i = 0;
      }
    }
  } else {
    fpi = fopen(argv[3], "r");
    while (fscanf(fpi, "%d", a) != EOF) {
      calc2(*a, n, r);
    }
  }
  return 0;
}
