#include <stdio.h>
#define MAXOP 20
main()
{
  int n,m;
  int i;
  int op[MAXOP];
  printf("m?\n");
  scanf("%d", &m);
  printf("n=?\n");
  scanf("%d", &n);
  for (i=0; i<=m; i++) op[i]=0;
  P(m,n,op,m);
}

P(int m, int n, int op[], int len)
{
  int i,j;
  int op2[MAXOP];
  if (n<m) printf("error %d %d\n",n,m);
  if (m==1) { // P(1,m)=1の処理
        printf("%d",n+op[0]);
        for (i=1;i<len;i++) printf("+%d",op[i]);
        putchar('\n');
        return;
        }
  if (m==n) { // P(m,m)=1の処理
        printf("%d",1+op[0]);
        for (i=1;i<n;i++) printf("+%d",1+op[i]);
        for (i=n;i<len;i++) printf("+%d",op[i]);
        putchar('\n');
        return;
        }
  for (i=0; i<len; i++) op2[i]=op[i];
  for (i=0; i<m; i++) op2[i]++;
  for (j=1; j<=m; j++) // 漸化式の左辺部分の処理
    if (n-m >= j) P(j, n-m, op2, len);
}
