Timus : 1014 (Product of Digits)
#include<bits/stdc++.h>
#define INF_MAX 2147483647
#define INF_MIN -2147483647
#define pi acos(-1.0)
#define N 1000000
#define LL long long
#define For(i, a, b) for( int i = (a); i < (b); i++ )
#define Fors(i, sz) for( size_t i = 0; i < sz.size (); i++ )
#define Fore(it, x) for(typeof (x.begin()) it = x.begin(); it != x.end (); it++)
#define Set(a, s) memset(a, s, sizeof (a))
#define Read(r) freopen(r, "r", stdin)
#define Write(w) freopen(w, "w", stdout)
using namespace std;
vector<int>v;
void recur(LL n)
{
if(n<10)
{
v.push_back(n);
return;
}
for(int i=9; i>2; i--)
{
if(n%i==0)
{
v.push_back(i);
recur(n/i);
break;
}
}
}
int main()
{
LL n;
while(cin>>n)
{
if(n==0)
{
printf("10\n");
continue;
}
v.clear();
recur(n);
sort(v.begin(),v.end());
LL product=1;
Fors(i,v) product*=v[i];
if(product==n)
{
Fors(i,v) printf("%d",v[i]);
printf("\n");
}
else printf("-1\n");
}
return 0;
}
#define INF_MAX 2147483647
#define INF_MIN -2147483647
#define pi acos(-1.0)
#define N 1000000
#define LL long long
#define For(i, a, b) for( int i = (a); i < (b); i++ )
#define Fors(i, sz) for( size_t i = 0; i < sz.size (); i++ )
#define Fore(it, x) for(typeof (x.begin()) it = x.begin(); it != x.end (); it++)
#define Set(a, s) memset(a, s, sizeof (a))
#define Read(r) freopen(r, "r", stdin)
#define Write(w) freopen(w, "w", stdout)
using namespace std;
vector<int>v;
void recur(LL n)
{
if(n<10)
{
v.push_back(n);
return;
}
for(int i=9; i>2; i--)
{
if(n%i==0)
{
v.push_back(i);
recur(n/i);
break;
}
}
}
int main()
{
LL n;
while(cin>>n)
{
if(n==0)
{
printf("10\n");
continue;
}
v.clear();
recur(n);
sort(v.begin(),v.end());
LL product=1;
Fors(i,v) product*=v[i];
if(product==n)
{
Fors(i,v) printf("%d",v[i]);
printf("\n");
}
else printf("-1\n");
}
return 0;
}