#include<bits//stdc++.h>
using namespace std;
int visited[5];
vector<string>vec1;
vector<string>vec;
map<int,set<string>>mp;
map<string,int>mp1;
void getans(int index, string & s1, string &s2)
{
    if(index==5)
    {   
        mp1[s2]=1;
        vec1.push_back(s2);
        return;
    }
    for(int i=0;i<5;i++)
    {
        if(visited[i]==1) continue;
        else
        {
            s2+=s1[i];
            visited[i]=1;
            getans(index+1,s1,s2);
            visited[i]=0;
            s2.pop_back();
        }
    }
    return;
}
void getans1(int index,string & s)
{
    if(index==5)
    {
        vec.push_back(s);
        return;
    }
    for(int i='0';i<='9';i++)
    {  
        s+=i;
        getans1(index+1,s);
        s.pop_back();
    }
}
int main()
{    
     memset(visited,0,sizeof(visited));
    string s;
    vec1.clear();
    getans1(0,s);
    s.clear();
    for(int i=0;i<vec.size();i++)
    {    
         if(mp1[vec[i]]) continue;
        vec1.clear();
        getans(0,vec[i],s);
       int sum=0;
       for(int j=0;j<vec1.size();j++)
         sum+=stoi(vec1[j]);
        for(int j=0;j<vec1.size();j++)
        {  
            int x=stoi(vec1[j]);
            mp[sum-x].insert(vec1[j]);
        }
    }
     int x;
     while(cin>>x)
     {  
        for(auto child:mp[x])
        cout<<child<<" ";
        cout<<endl;
     }
    return 0;
}