#include <iostream>
using namespace std;
#define N 8
void dfs(int ta[], int da[], int k, int kong, int zidan, int score) {
if (kong<0 || zidan<0 || score<0) return;
if (k == N) {
if (kong>0 || zidan>0 || score>0) return;
for (int i = 0; i<N; i++) {
for (int j = 0; j<da[i]; j++) {
printf("%d ", ta[i]);
}
}
printf("\n");
return;
}
for (int i = 0; i <= zidan; i++) {
da[k] = i;
int shengkong;
if (i == 0) {
shengkong = kong;
}
else {
shengkong = kong - 1;
}
dfs(ta, da, k + 1, shengkong, zidan - i, score - ta[k] * i);
}
da[k] = 0;
}
int main()
{
int ta[] = { 1,2,3,5,10,20,25,50 };
int da[N];
dfs(ta, da, 0, 3, 6, 96);
return 0;
}