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.*;
import java.math.*;
@SuppressWarnings("unchecked")
public class Main {
    InputReader ir = new InputReader(System.in);
    PrintWriter out = new PrintWriter(System.out);

    void solve() {
        List <Integer> l[] = new ArrayList[10];
        int arr[] = new int[10];
        for(int i = 0; i < 10; i++) {
            l[i] = new ArrayList();
        }

        l[2].add(2);
        l[3].add(3);
        l[4].add(2);
        l[4].add(2);
        l[5].add(5);
        l[6].add(2);
        l[6].add(3);
        l[7].add(7);
        l[8].add(2);
        l[8].add(2);
        l[8].add(2);
        l[9].add(3);
        l[9].add(3);
        //int arr[] = new int[10];
        int n = ir.readInt();
        
        char num[] = ir.readString().toCharArray();

        for(int i = 0; i < n; i++) {
            int x = (int)(num[i] - '0');
            for(int j = 1; j <= x; j++) {
                for(int k : l[j]) {
                    arr[k]++;
                }
            }
        }
        String ans = "";
        for(int i = 9; i >= 1; i--) {
            if(arr[i] == 0)
                continue;
            int d = arr[i];
            for(int j = 0; j < d; j++) {
                ans = ans + i;
                for(int k = 1; k <= i; k++) {
                    for(int m : l[k])
                        arr[m]--;
                }
            }
        }
        out.println(ans);

    }

    void run() {
        solve();
        out.close();
    }

    public static void main(String args[]){
        new Main().run();
    }
}
class Node implements Comparable <Node>{
    int val;
    int x;
    int y;
    public Node(int v, int m, int n) {
        val = v;
        x = m;
        y = n;
    }

    @Override
    public int compareTo(Node o) {
        if(o.val != val)
            return o.val - val;
        if(o.x != x)
            return o.x - x;
        return o.y - y;
    }
}


class InputReader {
 
    private InputStream stream;
    private byte[] buf = new byte[1024];
    private int curChar;
    private int numChars;
    private SpaceCharFilter filter;
 
    public InputReader(InputStream stream) {
        this.stream = stream;
    }
 
    public 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++];
    }
    public final int readInt() {
            int c = read();
            while (isSpaceChar(c))
                c = read();
            int sgn = 1;
            if (c == '-') {
                sgn = -1;
                c = read();
            }
            int res = 0;
            do {
                if (c < '0' || c > '9')
                    throw new InputMismatchException();
                res *= 10;
                res += c - '0';
                c = read();
            } while (!isSpaceChar(c));
            return res * sgn;
    }
    public long readLong() {
        int c = read();
        while (isSpaceChar(c))
            c = read();
        int sgn = 1;
        if (c == '-') {
            sgn = -1;
            c = read();
        }
        long res = 0;
        do {
            if (c < '0' || c > '9')
                throw new InputMismatchException();
            res *= 10;
            res += c - '0';
            c = read();
        } while (!isSpaceChar(c));
        return res * sgn;
    }
 
    public String readString() {
        int c = read();
        while (isSpaceChar(c))
            c = read();
        StringBuilder res = new StringBuilder();
        do {
            res.appendCodePoint(c);
            c = read();
        } while (!isSpaceChar(c));
        return res.toString();
    }
 
    public boolean isSpaceChar(int c) {
        if (filter != null)
            return filter.isSpaceChar(c);
        return isWhitespace(c);
    }
        public double readDouble() {
        return Double.parseDouble(readString());
    }
 
    public static boolean isWhitespace(int c) {
        return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
    }
 
    public String next() {
        return readString();
    }
 
    public interface SpaceCharFilter {
        public boolean isSpaceChar(int ch);
    }
}
class ArrayUtil {
    static int lowerbs(int arr[], int start, int end, int key) {
        if(start + 1 < end) {
            int mid = start + (end - start)/2;
            if(arr[mid] <= key) {
                return lowerbs(arr, mid, end, key);
            } else {
                return lowerbs(arr, start, mid - 1, key);
            }
        } else {
            int idx = -1;
            for(int i = start; i <= end; i++) {
                if(arr[i] <= key) {
                    idx = i;
                }
            }
            return idx;
        }
    }
    static int upperbs(int arr[], int start, int end, int key) {
        if(start + 1 < end) {
            int mid = start + (end - start)/2;
            if(arr[mid] >= key) {
                return upperbs(arr, start, mid, key);
            } else {
                return upperbs(arr, mid + 1, end, key);
            }
        } else {
            int idx = -1;
            for(int i = start; i <= end; i++) {
                if(arr[i] >= key) {
                    idx = i;
                    break;
                }
            }
            return idx;
        }
    }
}
class Pair <Type1 extends Comparable<Type1>, Type2 extends Comparable<Type2>> implements Comparable <Pair<Type1, Type2>>{
    Type1 F;
    Type2 S;
    public Pair(Type1 F, Type2 S) {
        this.F = F;
        this.S = S;
    }
    @Override 
    public int compareTo(Pair <Type1, Type2> p) {
        if(F.compareTo(p.F) == 0)
            return S.compareTo(p.S);
        return F.compareTo(p.F);
    }
}