#include <bits/stdc++.h>
using namespace std;
char InvertCase(char &c) { return islower(c) ? toupper(c) : tolower(c); }
bool is_Sorted(int first, int secound, long long int arr[]) {
  int i = first;
  for (; i < secound; i++) {
    if (arr[i] < arr[i + 1])
      continue;
    else {
      return false;
    }
  }
  if (i == secound) return true;
}
int dcmp(double x, double y) {
  return fabs(x - y) <= (1e-10) ? 0 : x < y ? -1 : 1;
}
long long int midpoint(long long int x, long long int y) { return (x + y) / 2; }
int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  ;
  int siz;
  cin >> siz;
  string s;
  cin >> s;
  int n2 = 0, n3 = 0, n5 = 0, n7 = 0;
  for (int i = 0; i < siz; i++) {
    if (s[i] == '2')
      n2++;
    else if (s[i] == '3')
      n3++;
    else if (s[i] == '4') {
      n3++;
      n2 += 2;
    } else if (s[i] == '5')
      n5++;
    else if (s[i] == '6') {
      n5++;
      n3++;
    } else if (s[i] == '7')
      n7++;
    else if (s[i] == '8') {
      n7++;
      n2 += 3;
    } else if (s[i] == '9') {
      n7++;
      n3 += 2;
      n2++;
    }
  }
  while (n7--) cout << "7";
  while (n5--) cout << "5";
  while (n3--) cout << "3";
  while (n2--) cout << "2";
  cout << endl;
  return 0;
}

### Prompt

Your task is to create a Cpp solution to the following problem:

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;
char InvertCase(char &c) { return islower(c) ? toupper(c) : tolower(c); }
bool is_Sorted(int first, int secound, long long int arr[]) {
  int i = first;
  for (; i < secound; i++) {
    if (arr[i] < arr[i + 1])
      continue;
    else {
      return false;
    }
  }
  if (i == secound) return true;
}
int dcmp(double x, double y) {
  return fabs(x - y) <= (1e-10) ? 0 : x < y ? -1 : 1;
}
long long int midpoint(long long int x, long long int y) { return (x + y) / 2; }
int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  ;
  int siz;
  cin >> siz;
  string s;
  cin >> s;
  int n2 = 0, n3 = 0, n5 = 0, n7 = 0;
  for (int i = 0; i < siz; i++) {
    if (s[i] == '2')
      n2++;
    else if (s[i] == '3')
      n3++;
    else if (s[i] == '4') {
      n3++;
      n2 += 2;
    } else if (s[i] == '5')
      n5++;
    else if (s[i] == '6') {
      n5++;
      n3++;
    } else if (s[i] == '7')
      n7++;
    else if (s[i] == '8') {
      n7++;
      n2 += 3;
    } else if (s[i] == '9') {
      n7++;
      n3 += 2;
      n2++;
    }
  }
  while (n7--) cout << "7";
  while (n5--) cout << "5";
  while (n3--) cout << "3";
  while (n2--) cout << "2";
  cout << endl;
  return 0;
}

```