#include <iostream.h>

#include <conio.h>

/*Adott egy s termeszetes szam. Hozzuk letre az osszes olyan termeszetes

  szamot, amelyben a szamjegyek  mind különbözôek és összegük s (ezt beolvassuk).*/

 

int v[100],p,valtozhat,megfelel,tele;

int s;

 

void init(void)

{

 v[p]=-1;

}

 

void modosit(void)

{

 valtozhat=((v[p]<9)&&(v[p]<s));

 if (valtozhat) v[p]++;

}

 

void ellenoriz(void)

{

 megfelel=1;

 for(int i=1;i<=p-1;i++) if(v[i]==v[p]){megfelel=0;return;}

}

 

void vizsgal(void)

{

 int k=0;

 for(int i=1;i<=p;i++)k=k+v[i];

 tele=(k==s);

}

 

void kiir(void)

{

 for(int i=p; i>=1; i--)cout<<v[i];

 cout<<endl;

}

 

void main(void)

{

 clrscr();

  cout<<"s=";cin>>s;

  p=1;v[p]=-1;

  while (p>0)

  {

      do

       {

        modosit();

        if (valtozhat) ellenoriz();

       } while ((valtozhat)&&(!megfelel));

 

       if (valtozhat)

        {

         vizsgal();

         if (tele) kiir(); else {p++;init();}

        }

       else p--;

  }

 getch();

}