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.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.InputMismatchException;


public class A {
	static long fact[];
	public static void main(String[] args) {
		FinalScanner sc = new FinalScanner();
		int N = sc.nextInt();
		int[] freq = new int[10];
		fact = new long[10];
		fact[0]=1;
		fact[1]=1;
		for(int a=2;a<=9;a++)
			fact[a]=fact[a-1]*a;
		
		String cur = sc.next();
		for(int a=0;a<cur.length();a++){
			int temp = cur.charAt(a)-'0';
		//	for(int b=temp;b>=0;b--)
				freq[temp]++;
		}
	//	System.out.println(Arrays.toString(freq));
	//	System.out.println(Arrays.toString(fact));
		
		freq[7]+=freq[9];
		freq[3]+=freq[9]*2;
		freq[2]+=freq[9];
		freq[9]=0;
		
		freq[2]+=freq[8]*3;
		freq[7]+=freq[8];
		freq[8]=0;
		
		freq[3]+=freq[6];
	//	freq[2]+=freq[6];
		freq[5]+=freq[6];
		freq[6]=0;
		
		freq[2]+=freq[4]*2;
		freq[3]+=freq[4];
		freq[4]=0;
		
		StringBuilder ans = new StringBuilder();
		for(int a=9;a>=2;a--){
			while(freq[a]>0){
				freq[a]--;
				ans.append(a);
			}
		}
	//	System.err.println(calc(cur)+" "+calc(ans.toString()));

		System.out.println(ans);
	}

	private static long calc(String cur) {
		long ans = 1;
		for(int a=0;a<cur.length();a++){
			ans*=fact[cur.charAt(a)-'0'];
		}
		return ans;
	}

	private static long F(String cur) {
		long ans = 0;
		for(int a=0;a<cur.length();a++){
			int temp = cur.charAt(a)-'0';
			ans+=fact[temp];
		}
		return ans;
	}

	static class FinalScanner{
		private InputStream stream;
		private byte[] buf = new byte[1024];
		private int curChar;
		private int numChars;
		
		public FinalScanner(){
			stream = System.in;
			//stream = new FileInputStream(new File("dec.in"));

		}
		int read(){
			if(numChars==-1)
				throw new InputMismatchException();
			if(curChar>=numChars){
				curChar = 0;
				try{
					numChars = stream.read(buf);
				} catch (IOException e){
					throw new InputMismatchException();
				}
				if(numChars <= 0)
					return -1;
			}
			return buf[curChar++];
		}
		
		boolean isSpaceChar(int c){
			return c==' '||c=='\n'||c=='\r'||c=='\t'||c==-1;
		}
		boolean isEndline(int c){
			return c=='\n'||c=='\r'||c==-1;
		}
		int nextInt(){
			return Integer.parseInt(next());
		}
		int[] nextInt(int v){
			int[] temp = new int[v];
			for(int a=0;a<v;a++)temp[a]=nextInt();
			return temp;
		}
		long nextLong(){
			return Long.parseLong(next());
		}
		long[] nextLong(int v){
			long[] temp = new long[v];
			for(int a=0;a<v;a++)temp[a]=nextLong();
			return temp;
		}
		double nextDouble(){
			return Double.parseDouble(next());
		}
		double[] nextDouble(int v){
			double[] temp = new double[v];
			for(int a=0;a<v;a++)temp[a]=nextDouble();
			return temp;
		}
		String next(){
			int c = read();
			while(isSpaceChar(c))
				c=read();
			StringBuilder res = new StringBuilder();
			do{
				res.appendCodePoint(c);
				c=read();
			} while(!isSpaceChar(c));
			return res.toString();
		}
		String[] next(int v){
			String[] temp = new String[v];
			for(int a=0;a<v;a++)temp[a]=next();
			return temp;
		}
		String nextLine(){
			int c = read();
			while(isEndline(c))
				c=read();
			StringBuilder res = new StringBuilder();
			do{
				res.appendCodePoint(c);
				c = read();
			}while(!isEndline(c));
			return res.toString();
		}
		String[] nextLine(int v){
			String[] temp = new String[v];
			for(int a=0;a<v;a++)temp[a]=nextLine();
			return temp;
		}
		
		
	}

}
