import java.io.*
import java.lang.RuntimeException

val pw = PrintWriter(System.out)
const val MOD = 1000000007L
const val INF = 2147483647
const val LINF = 9223372036854775807L

fun main(args: Array<String>) {
    solve()
    pw.flush()
}

fun solve() {
    val (n, m) = nextIntList()
    val a = nextIntList()
    val match = arrayOf(0, 2, 5, 5, 4, 5, 6, 3, 7, 6)

    val dp = intAry2(n + 1, 10)
    for (i in 0 until m){
        for (num in 0..n){
            if(num - match[a[i]] < 0 || (num - match[a[i]] != 0 && dp[num - match[a[i]]][0] == 0)) continue
            if(check(dp[num], dp[num - match[a[i]]], a[i])){
                dp[num][0] = dp[num - match[a[i]]][0] + 1
                for (j in 1..9){
                    if(j == a[i]){
                        dp[num][j] = dp[num - match[a[i]]][j] + 1
                    } else {
                        dp[num][j] = dp[num - match[a[i]]][j]
                    }
                }
            }
        }
    }

    for (i in 9 downTo  1){
        repeat(dp[n][i]){
            print(i)
        }
    }
    println()

}

fun check(after: IntArray, before: IntArray, num: Int): Boolean{
    if(after[0] < before[0] + 1) return true
    if(after[0] > before[0] + 1) return false

    for (i in 9 downTo  1){
        if(i == num){
            if(after[i] < before[i] + 1) return true
            if(after[i] > before[i] + 1) return false
        } else {
            if(after[i] < before[i]) return true
            if(after[i] > before[i]) return false
        }
    }

    return true
}


fun println(v: String) {
    pw.println(v)
}

fun print(v: String) {
    pw.print(v)
}

fun next() = readLine()!!
fun nextInt() = next().toInt()
fun nextLong() = next().toLong()
fun nextDouble() = next().toDouble()
fun nextList() = next().split(" ").toMutableList()
fun nextIntList(index: Int = 0) = next().split(" ").map { it.toInt() + index }.toMutableList()
fun nextLongList(index: Long = 0L) = next().split(" ").map { it.toLong() + index }.toMutableList()
fun nextDoubleList() = next().split(" ").map { it.toDouble() }.toMutableList()

fun ary(n: Int, init: String = "") = Array(n) { init }
fun intAry(n: Int, init: Int = 0) = IntArray(n) { init }
fun longAry(n: Int, init: Long = 0L) = LongArray(n) { init }
fun doubleAry(n: Int, init: Double = 0.0) = DoubleArray(n) { init }
fun ary2(n: Int, m: Int, init: String = "") = Array(n) { Array(m) { init } }
fun intAry2(n: Int, m: Int, init: Int = 0) = Array(n) { IntArray(m) { init } }
fun longAry2(n: Int, m: Int, init: Long = 0) = Array(n) { LongArray(m) { init } }
fun doubleAry2(n: Int, m: Int, init: Double = 0.0) = Array(n) { DoubleArray(m) { init } }
fun ary3(n: Int, m: Int, k: Int, init: String = "") = Array(n) { Array(m) { Array(k) { init } } }
fun intAry3(n: Int, m: Int, k: Int, init: Int = 0) = Array(n) { Array(m) { IntArray(k) { init } } }
fun longAry3(n: Int, m: Int, k: Int, init: Long = 0L) = Array(n) { Array(m) { LongArray(k) { init } } }
fun doubleAry3(n: Int, m: Int, k: Int, init: Double = 0.0) = Array(n) { Array(m) { DoubleArray(k) { init } } }

fun abs(n: Int): Int = Math.abs(n)
fun abs(n: Long): Long = Math.abs(n)
fun abs(n: Double): Double = Math.abs(n)
fun max(vararg values: Int) = if (values.isEmpty()) -INF else values.max()!!
fun max(vararg values: Long) = if (values.isEmpty()) -LINF else values.max()!!
fun min(vararg values: Int) = if (values.isEmpty()) INF else values.min()!!
fun min(vararg values: Long) = if (values.isEmpty()) LINF else values.min()!!
fun swap(a: String, b: String) = Pair<String, String>(b, a)
fun swap(a: Int, b: Int) = Pair<Int, Int>(b, a)
fun swap(a: Long, b: Long) = Pair<Long, Long>(b, a)
fun swap(a: Double, b: Double) = Pair<Double, Double>(b, a)

Measured memory_bytes: 41016