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

public class A
{
   public static void main(String[] args)
   {
      PrintWriter out = new PrintWriter(System.out);
      new A(new FastScanner(), out);
      out.close();
   }

   int[] read(String s)
   {
      int ptr = 0;
      int[] vs = new int[s.length()];
      for (char c : s.toCharArray())
         vs[ptr++] = (int)(c-'0');
      return vs;
   }

   public A(FastScanner in, PrintWriter out)
   {
      int N = in.nextInt();
      int[] vs = read(in.next());
      int[] primes = {2, 3, 5, 7};
      
      int[] count = new int[4];
      for (int vv : vs)
      {
         if (vv < 2) continue;
         if (vv == 2)
            count[0]++;
         else if (vv == 3)
            count[1]++;
         else if (vv == 4)
         {
            count[0] += 2;
            count[1]++;
         }
         else if (vv == 5)
            count[2]++;
         else if (vv == 6)
         {
            count[2]++;
            count[1]++;
         }
         else if (vv == 7)
            count[3]++;
         else if (vv == 8)
         {
            count[3]++;
            count[0]+=3;
         }
         else if (vv == 9)
         {
            count[3]++;
            count[1]+=2;
            count[0]++;
         }
      }
      StringBuilder sb = new StringBuilder();
      for (int i=3; i>=0; i--)
         while (count[i]-->0)
            sb.append(primes[i]);
      out.println(sb);
   }
}

class FastScanner{
    private InputStream stream;
    private byte[] buf = new byte[1024];
    private int curChar;
    private int numChars;
    
    public FastScanner()
    {
        stream = System.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());
    }
    
    long nextLong()
    {
        return Long.parseLong(next());
    }
    
    double nextDouble()
    {
        return Double.parseDouble(next());
    }
    
    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 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();
    }
}
