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>
//package CF;  
import java.io.*;
import java.util.*;

public class B{

    @SuppressWarnings({ "unchecked", "rawtypes" })
    public static void main(String[] args) throws Exception {
	Scanner bf = new Scanner(System.in);
	PrintWriter out = new PrintWriter(System.out);
	int n = bf.nextInt();
	String a = bf.nextLine();
	PriorityQueue<Integer> pq = new PriorityQueue(new Comparator<Integer>() {

	    @Override
	    public int compare(Integer o1, Integer o2)
	    {
		// TODO Auto-generated method stub
		return o2 - o1;
	    }
	});
	for (int i = 0; i < a.length(); i++)
	{
	    int num = a.charAt(i)-'0';
	    switch(num){
		case 2:  
		case 3:
		case 5:
		case 7:
		    pq.add(num);
		    break;
		case 4: 
		    pq.add(2);
		    pq.add(2);
		    pq.add(3);
		    break;
		case 6:
		    pq.add(3);
		    pq.add(5);
		    break;
		case 8:
		    pq.add(2);
		    pq.add(2);
		    pq.add(2);
		    pq.add(7);
		    break;
		case 9:
		    pq.add(7);
		    pq.add(3);
		    pq.add(3);
		    pq.add(2);
		    break;
	    }
	}
	while(!pq.isEmpty()){
	    out.print(pq.remove());
	}
	out.flush();
	out.close();
    }

    static class Scanner 
    {
	StringTokenizer st;
	BufferedReader br;

	public Scanner(InputStream s){	br = new BufferedReader(new InputStreamReader(s));}

	public String next() throws IOException 
	{
	    while (st == null || !st.hasMoreTokens()) 
		st = new StringTokenizer(br.readLine());
	    return st.nextToken();
	}

	public int nextInt() throws IOException {return Integer.parseInt(next());}

	public long nextLong() throws IOException {return Long.parseLong(next());}

	public String nextLine() throws IOException {return br.readLine();}

	public double nextDouble() throws IOException
	{
	    String x = next();
	    StringBuilder sb = new StringBuilder("0");
	    double res = 0, f = 1;
	    boolean dec = false, neg = false;
	    int start = 0;
	    if(x.charAt(0) == '-')
	    {
		neg = true;
		start++;
	    }
	    for(int i = start; i < x.length(); i++)
		if(x.charAt(i) == '.')
		{
		    res = Long.parseLong(sb.toString());
		    sb = new StringBuilder("0");
		    dec = true;
		}
		else
		{
		    sb.append(x.charAt(i));
		    if(dec)
			f *= 10;
		}
	    res += Long.parseLong(sb.toString()) / f;
	    return res * (neg?-1:1);
	}

	public boolean ready() throws IOException {return br.ready();}
    }

}