Drazil is playing a math game with Varda.
Let's define for positive integer x as a product of factorials of its digits. For example,
.
First, they choose a decimal number a consisting of n digits that contains at least one digit larger than 1. This number may possibly start with leading zeroes. Then they should find maximum positive number x satisfying following two conditions:
1. x doesn't contain neither digit 0 nor digit 1.
2. =
.
Help friends find such number.
Input
The first line contains an integer n (1 ≤ n ≤ 15) — the number of digits in a.
The second line contains n digits of a. There is at least one digit in a that is larger than 1. Number a may possibly contain leading zeroes.
Output
Output a maximum possible integer satisfying the conditions above. There should be no zeroes and ones in this number decimal representation.
Examples
4
1234
33222
3
555
555
Note
In the first case,
题解:此题需要知道0~9的阶乘,"0","1","2","3","322","5","35","7","2227","2337"//分别为0~9对应的阶乘相乘形式,然后笨方法,代码如下
#include<cstdio> #include<iostream> using namespace std; //"0","1","2","3","322","5","35","7","2227","2337"//分别为0~9对应的阶乘相乘形式 int main() { int n; char s[20]; int a[100]={0}; cin>>n; cin>>s; for(int i=0;i<n;i++) { int t=s[i]-'0'; switch(t) { case 1: a[1]++;break; case 2: a[2]++;break; case 3: a[3]++;break; case 4: a[2]+=2;a[3]++;break; case 5: a[5]++;break; case 6: a[3]++;a[5]++;break; case 7: a[7]++;break; case 8: a[2]+=3;a[7]++;break; case 9: a[2]++;a[3]+=2;a[7]++;break; } } for(int i=9;i>=2;i--) for(int j=1;j<=a[i];j++) cout<<i; cout<<endl; return 0; }