package junior2015;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class Junior2015p5{
public static void fun(int[] str,int n,int m,int k,int k1) throws IOException
{
if(n>0)
{
for(int i=n;i>=1;i--)
{
if(m==0)
{System.out.println();k++;}
if(m==0||i<=str[m-1])
{
str[m]=i;
fun(str,n-i,m+1,k,k1);
}
}
}
else
{
int []result=new int[20];
int rn=0;
for(int i=0;i<=m-1;i++)
{
if(i==(m-1))
{
if (k==(m-1))
{
System.out.print(str[i]);
}
else
{
System.out.print(str[i]+",");
rn++;
}
}
else
{
rn++;
result[i]=str[i];
System.out.print(str[i]+" ");
}
}
}
}
public static int q(int n,int m)
{
if(n<1||m<1)return 0;
if(n==1||m==1)return 1;
if(n<m)return q(n,n);
if(n==m)return q(n,m-1)+1;
return q(n,m-1)+q(n-m,m);
}
public static void main(String[] args) throws IOException
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str1=br.readLine();
String str2=br.readLine();
// Scanner scanner = new Scanner(System.in);
// System.out.print("请输入一个数: ");
// int n = scanner.nextInt();
//输入数
fun(new int[Integer.parseInt(str1)],Integer.parseInt(str1),0,-1,Integer.parseInt(str2));
System.out.println();
//得出结果
int result=q(Integer.parseInt(str1),Integer.parseInt(str1));
System.out.println();
System.out.println(result);
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class Junior2015p5{
public static void fun(int[] str,int n,int m,int k,int k1) throws IOException
{
if(n>0)
{
for(int i=n;i>=1;i--)
{
if(m==0)
{System.out.println();k++;}
if(m==0||i<=str[m-1])
{
str[m]=i;
fun(str,n-i,m+1,k,k1);
}
}
}
else
{
int []result=new int[20];
int rn=0;
for(int i=0;i<=m-1;i++)
{
if(i==(m-1))
{
if (k==(m-1))
{
System.out.print(str[i]);
}
else
{
System.out.print(str[i]+",");
rn++;
}
}
else
{
rn++;
result[i]=str[i];
System.out.print(str[i]+" ");
}
}
}
}
public static int q(int n,int m)
{
if(n<1||m<1)return 0;
if(n==1||m==1)return 1;
if(n<m)return q(n,n);
if(n==m)return q(n,m-1)+1;
return q(n,m-1)+q(n-m,m);
}
public static void main(String[] args) throws IOException
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str1=br.readLine();
String str2=br.readLine();
// Scanner scanner = new Scanner(System.in);
// System.out.print("请输入一个数: ");
// int n = scanner.nextInt();
//输入数
fun(new int[Integer.parseInt(str1)],Integer.parseInt(str1),0,-1,Integer.parseInt(str2));
System.out.println();
//得出结果
int result=q(Integer.parseInt(str1),Integer.parseInt(str1));
System.out.println();
System.out.println(result);
}
}