#include <iostream>
using namespace std;
int main()
{
while(true)
{
cout<<"Podaj N (0-koniec): ";
unsigned N;
if(cin>>N)
{
if(!N) break;
cout<<endl;
unsigned *tb=(new unsigned[N])-1; // tablica z indeksacją od 1
for(unsigned i=1;i<N;++i) tb[i]=0;
tb[N]=1;
unsigned count=0;
while(true)
{
cout<<(++count)<<":";
for(unsigned i=1;i<=N;++i) if(tb[i]) cout<<" "<<tb[i]<<'*'<<i;
cout<<endl;
unsigned Sum=tb[1],p=1;
tb[1]=0;
while((p<=N)&&(!tb[p])) ++p;
if(p>N) break;
--tb[p];
Sum+=p;
while(--p)
{
unsigned add=Sum/p;
tb[p]=add;
Sum-=p*add;
}
}
delete[] (tb+1); // zwolnienie tablicy z indeksacją od 1
cout<<"Ilosc kombinacji "<<count<<endl;
}
else
{
cin.clear();
cout<<"Ma to byc liczba"<<endl;
}
while(cin.get()!='\n'){}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCmludCBtYWluKCkgCiAgewogICB3aGlsZSh0cnVlKQogICAgIHsKICAgICAgY291dDw8IlBvZGFqIE4gKDAta29uaWVjKTogIjsKICAgICAgdW5zaWduZWQgTjsKICAgICAgaWYoY2luPj5OKQogICAgICAgIHsKICAgICAgICAgaWYoIU4pIGJyZWFrOwogICAgICAgICBjb3V0PDxlbmRsOwogICAgICAgICB1bnNpZ25lZCAqdGI9KG5ldyB1bnNpZ25lZFtOXSktMTsgLy8gdGFibGljYSB6IGluZGVrc2FjasSFIG9kIDEKICAgICAgICAgZm9yKHVuc2lnbmVkIGk9MTtpPE47KytpKSB0YltpXT0wOwogICAgICAgICB0YltOXT0xOwogICAgICAgICB1bnNpZ25lZCBjb3VudD0wOwogICAgICAgICB3aGlsZSh0cnVlKQogICAgICAgICAgIHsKICAgICAgICAgICAgY291dDw8KCsrY291bnQpPDwiOiI7CiAgICAgICAgICAgIGZvcih1bnNpZ25lZCBpPTE7aTw9TjsrK2kpIGlmKHRiW2ldKSBjb3V0PDwiICI8PHRiW2ldPDwnKic8PGk7CiAgICAgICAgICAgIGNvdXQ8PGVuZGw7CiAgICAgICAgICAgIHVuc2lnbmVkIFN1bT10YlsxXSxwPTE7CiAgICAgICAgICAgIHRiWzFdPTA7CiAgICAgICAgICAgIHdoaWxlKChwPD1OKSYmKCF0YltwXSkpICsrcDsKICAgICAgICAgICAgaWYocD5OKSBicmVhazsKICAgICAgICAgICAgLS10YltwXTsKICAgICAgICAgICAgU3VtKz1wOwogICAgICAgICAgICB3aGlsZSgtLXApCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICB1bnNpZ25lZCBhZGQ9U3VtL3A7CiAgICAgICAgICAgICAgIHRiW3BdPWFkZDsKICAgICAgICAgICAgICAgU3VtLT1wKmFkZDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgfSAgICAgICAgIAogICAgICAgICBkZWxldGVbXSAodGIrMSk7IC8vIHp3b2xuaWVuaWUgdGFibGljeSB6IGluZGVrc2FjasSFIG9kIDEKICAgICAgICAgY291dDw8Iklsb3NjIGtvbWJpbmFjamkgIjw8Y291bnQ8PGVuZGw7CiAgICAgICAgfQogICAgICBlbHNlCiAgICAgICAgewogICAgICAgICBjaW4uY2xlYXIoKTsKICAgICAgICAgY291dDw8Ik1hIHRvIGJ5YyBsaWN6YmEiPDxlbmRsOwogICAgICAgIH0KICAgICAgd2hpbGUoY2luLmdldCgpIT0nXG4nKXt9CiAgICAgfQogICByZXR1cm4gMDsKICB9