Drazil is playing a math game with Varda.

Let's define <image> for positive integer x as a product of factorials of its digits. For example, <image>.

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. <image> = <image>.

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

Input

4
1234


Output

33222


Input

3
555


Output

555

Note

In the first case, <image>
import java.io.*;
import java.util.*;

public class Main implements Runnable {
    
    int n;
    String s;
    int [] d;
    
    int [] p = {1, 1, 2, 3, 3, 5, 5, 7, 7, 7};

    public void solve() throws IOException {
        //out.println("Hello, world!");
        n = nextInt();
        s = next();
        d = new int [n];
        for (int i = 0 ; i < n ; i ++)
            d[i] = s.charAt(i) - '0';
        int two = 0, three = 0;
        
        ArrayList<Integer> ans = new ArrayList<Integer>();
        
        for (int i = 0 ; i < n ; i ++) {
            int mxp = p[d[i]];
            if (mxp >= 5) {
                ans.add(mxp);
                for (int j = mxp ; j <= d[i] ; j++) {
                    int jj = j;
                    while (jj % 2 == 0) {
                        jj /= 2;
                        two ++;
                    }
                    while (jj % 3 == 0) {
                        jj /= 3;
                        three ++;
                    }
                }
            } else if (mxp >= 2) {
                for (int j = 2 ; j <= d[i] ; j++) {
                    int jj = j;
                    while (jj % 2 == 0) {
                        jj /= 2;
                        two ++;
                    }
                    while (jj % 3 == 0) {
                        jj /= 3;
                        three ++;
                    }
                }
            }
        }
        for (int i = 0 ; i < three ; i ++) {
            ans.add(3);
        }
        two -= three;
        for (int i = 0 ; i < two ; i ++)
            ans.add(2);
        Collections.sort(ans);
        for (int i = ans.size() - 1 ; i >= 0 ; i --)
            out.print(ans.get(i));
        
        out.println();
        
    }
    

    
    
    BufferedReader bf;
    StringTokenizer st;
    PrintWriter out;
    
    public String next() throws IOException {
        while (st == null || !st.hasMoreTokens()) 
            st = new StringTokenizer(bf.readLine());
        return st.nextToken();
    }
    public int nextInt() throws IOException {
        return Integer.parseInt(next());
    }
    
    public void run() {
        try {
            bf = new BufferedReader(new InputStreamReader(System.in));
            out = new PrintWriter(new OutputStreamWriter(System.out));
            solve();
            bf.close();
            out.close();
        } catch (IOException e) {
            System.exit(-1);
        }
    }
    
    public Main() throws IOException {
        
    }
    
    public static void main(String args[]) throws IOException {
        new Main().run();
    }
}
