#include<iostream>
#include <algorithm>
using namespace std;
int N_MAX = 10000;
int mn[10001];
int mi[10001][10];
int ma(int n, int* o)
{
  if(n<2) return -1;
  if(mn[n]!=0) return mn[n];
  if(n==2)
    if(o[1]==1){
      mn[2]=1;
      mi[2][1]=1;
      return 1;
    } else {
      mn[2]=-1;
      return -1;
    }
  if(n==3)
    if(o[7]==1){
      mn[3]=1;
      mi[3][7]=1;
      return 1;
    } else {
      mn[3]=-1;
      return -1;
    }
  if(n==4)
    if(o[1]==1){
      mn[4]=2;
      mi[4][1]=2;
      return 2;
    } else if(o[4]==1){
      mn[4]=1;
      mi[4][4]=1;
      return 1;
    } else {
      mn[4]=-1;
      return -1;
    }
  int mnt=-1;
  int mit[10];
  fill(mit,mit+10,0);
  int a,b;
  if(n==5){
    if(o[5]==1){
      mnt=1;
      mit[5]=1;
    } else if(o[3]==1){
      mnt=1;
      mit[3]=1;
    } else if(o[2]==1){
      mnt=1;
      mit[2]=1;
    }
    for(int i=2;i<=2;i++){
      a=ma(2,o);
      if(a<0) continue;
      b=ma(3,o);
      if(b<0) continue;
      if(a+b>mnt){
        mnt=a+b;
        for(int j=1;j<=9;j++)
          mit[j]=mi[2][j]+mi[3][j];
      }
    }
  } else if(n==6){
    if(o[9]==1){
      mnt=1;
      mit[9]=1;
    } else if(o[6]==1){
      mnt=1;
      mit[6]=1;
    }
    for(int i=2;i<=3;i++){
      a=ma(i,o);
      if(a<0) continue;
      b=ma(n-i,o);
      if(b<0) continue;
      if(a+b>mnt){
        mnt=a+b;
        for(int j=1;j<=9;j++)
          mit[j]=mi[i][j]+mi[n-i][j];
      } else if(a+b==mnt)
        for(int j=9;j>=1;j--)
          if(mit[j]>mi[i][j]+mi[n-i][j]) break;
          else if(mit[j]==mi[i][j]+mi[n-i][j]) continue;
          else{
            for(int l=1;l<=9;l++)
       	      mit[l]=mi[i][l]+mi[n-i][l];
            break;
          }
    }
  } else if(n==7){
    if(o[8]==1){
      mnt=1;
      mit[8]=1;
    }
    for(int i=2;i<=3;i++){
      a=ma(i,o);
      if(a<0) continue;
      b=ma(n-i,o);
      if(b<0) continue;
      if(a+b>mnt){
        mnt=a+b;
        for(int j=1;j<=9;j++)
          mit[j]=mi[i][j]+mi[n-i][j];
      } else if(a+b==mnt)
        for(int j=9;j>=1;j--)
          if(mit[j]>mi[i][j]+mi[n-i][j]) break;
          else if(mit[j]==mi[i][j]+mi[n-i][j]) continue;
          else{
            for(int l=1;l<=9;l++)
       	      mit[l]=mi[i][l]+mi[n-i][l];
            break;
          }
    }
  } else { // n>7
    int k=n/2;
    for(int i=6;i>=0;i--){
      a=ma(k-i,o);
      if(a<0) continue;
      b=ma(n-k+i,o);
      if(b<0) continue;
      if(a+b>mnt){
        mnt=a+b;
        for(int j=1;j<=9;j++)
          mit[j]=mi[k-i][j]+mi[n-k+i][j];
      } else if(a+b==mnt)
        for(int j=9;j>=1;j--)
          if(mit[j]>mi[k-i][j]+mi[n-k+i][j]) break;
          else if(mit[j]==mi[k-i][j]+mi[n-k+i][j]) continue;
          else{
            for(int l=1;l<=9;l++)
       	      mit[l]=mi[k-i][l]+mi[n-k+i][l];
            break;
          }
    }
  }
  mn[n]=mnt;
  for(int j=1;j<=9;j++)
    mi[n][j]=mit[j];
  return mn[n];
}
int main()
{
  int n,m;
  cin >> n >> m;
  int o[10];
  fill(o,o+10,0);
  int t;
  int i,j;
  for(i=0;i<m;i++){
    cin >> t;
    o[t]=1;
  }
  t=ma(n,o);
  for(i=9;i>=1;i--)
    for(j=0;j<mi[n][i];j++)
      cout << i;
  cout << endl;
  return 0;
}

Measured memory_bytes: 256