#include <bits/stdc++.h>
using namespace std;
int n, sum[1100];
char S[1100];
bool used[110][70][16][16];
string ff[110][70][16][16];
int s(int t) {
  int ss = 0;
  for (int i = 1; i <= 9; i++) {
    int tt = i;
    while (tt) ss += sum[i] * (tt / t), tt /= t;
  }
  return ss;
}
string f(int a, int b, int c, int d) {
  if (used[a][b][c][d]) return ff[a][b][c][d];
  string ans = "", tmp;
  for (int i = 2; i <= 9; i++) {
    if (a >= i / 2 + i / 4 + i / 8 && b >= i / 3 + i / 9 && c >= i / 5 &&
        d >= i / 7) {
      tmp = char(i + '0') + f(a - i / 2 - i / 4 - i / 8, b - i / 3 - i / 9,
                              c - i / 5, d - i / 7);
      if (tmp.size() == 1 && a - i / 2 - i / 4 - i / 8 + b - i / 3 - i / 9 + c -
                                     i / 5 + d - i / 7 >
                                 0)
        continue;
      if (tmp.size() > ans.size() || (tmp.size() == ans.size() && tmp > ans))
        ans = tmp;
    }
  }
  used[a][b][c][d] = true;
  return ff[a][b][c][d] = ans;
}
int main() {
  scanf("%d", &n);
  scanf("%s", S);
  for (int i = 0; i < n; i++) {
    sum[S[i] - '0']++;
  }
  cout << f(s(2), s(3), s(5), s(7)) << endl;
}

### Prompt

Please provide a Cpp coded solution to the problem described below:

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>

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
int n, sum[1100];
char S[1100];
bool used[110][70][16][16];
string ff[110][70][16][16];
int s(int t) {
  int ss = 0;
  for (int i = 1; i <= 9; i++) {
    int tt = i;
    while (tt) ss += sum[i] * (tt / t), tt /= t;
  }
  return ss;
}
string f(int a, int b, int c, int d) {
  if (used[a][b][c][d]) return ff[a][b][c][d];
  string ans = "", tmp;
  for (int i = 2; i <= 9; i++) {
    if (a >= i / 2 + i / 4 + i / 8 && b >= i / 3 + i / 9 && c >= i / 5 &&
        d >= i / 7) {
      tmp = char(i + '0') + f(a - i / 2 - i / 4 - i / 8, b - i / 3 - i / 9,
                              c - i / 5, d - i / 7);
      if (tmp.size() == 1 && a - i / 2 - i / 4 - i / 8 + b - i / 3 - i / 9 + c -
                                     i / 5 + d - i / 7 >
                                 0)
        continue;
      if (tmp.size() > ans.size() || (tmp.size() == ans.size() && tmp > ans))
        ans = tmp;
    }
  }
  used[a][b][c][d] = true;
  return ff[a][b][c][d] = ans;
}
int main() {
  scanf("%d", &n);
  scanf("%s", S);
  for (int i = 0; i < n; i++) {
    sum[S[i] - '0']++;
  }
  cout << f(s(2), s(3), s(5), s(7)) << endl;
}

```