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.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.PrintStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.IOException;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 * @author Tifuera
 */
public class Main {
	public static void main(String[] args) {
		InputStream inputStream = System.in;
		OutputStream outputStream = System.out;
		InputReader in = new InputReader(inputStream);
		PrintWriter out = new PrintWriter(outputStream);
		TaskA solver = new TaskA();
		solver.solve(1, in, out);
		out.close();
	}
}

class TaskA {
    int[] result;

    public void solve(int testNumber, InputReader in, PrintWriter out) {
        result = new int[10];
        int n = in.nextInt();

        String str = in.next();
        for (char ch : str.toCharArray()) {
            updateResult(ch - '0');
        }

        for (int i = 9; i > 1; i--) {
            while (result[i] > 0) {
                out.print(i);
                result[i]--;
            }
        }
    }

    private void updateResult(int a) {
        System.err.print(a);
        if (a > 1) {
            switch (a) {
                case 2:
                    result[2]++;
                    break;
                case 3:
                    result[3]++;
                    break;
                case 4:
                    result[3]++;
                    result[2] += 2;
                    break;
                case 5:
                    result[5]++;
                    break;
                case 6:
                    result[5]++;
                    result[3]++;
                    break;
                case 7:
                    result[7]++;
                    break;
                case 8:
                    result[7]++;
                    result[2] += 3;
                    break;
                case 9:
                    result[7]++;
                    result[3] += 2;
                    result[2]++;
                    break;
            }
        }
    }

}

class InputReader {
    private BufferedReader reader;
    private String[] currentArray;
    private int curPointer;

    public InputReader(InputStream inputStream) {
        reader = new BufferedReader(new InputStreamReader(inputStream));
    }


    public String next() {
        try {
            currentArray = null;
            return reader.readLine();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    public int nextInt() {
        if ((currentArray == null) || (curPointer >= currentArray.length)) {
            try {
                currentArray = reader.readLine().split(" ");
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            curPointer = 0;
        }
        return Integer.parseInt(currentArray[curPointer++]);
    }

}

