def main(): import sys input = sys.stdin.read().split() idx = 0 N = int(input[idx]) idx += 1 K = input[idx] idx += 1 c = list(map(int, input[idx:idx+9])) idx += 9 digits = [] for i in range(9): digits.extend([i+1] * c[i]) if len(K) > N: print(-1) return elif len(K) < N: digits.sort() min_first = min(d for d in digits if d != 0) pos = digits.index(min_first) digits = [min_first] + digits[:pos] + digits[pos+1:] print(''.join(map(str, digits))) return max_M = sorted(digits, reverse=True) max_M_str = ''.join(map(str, max_M)) if len(max_M_str) < len(K): print(-1) return if max_M_str <= K: print(-1) return k_digits = list(K) available = c.copy() M = [] for i in range(N): found = False for d in range(10): if available[d-1] == 0: continue if d < int(k_digits[i]): continue available[d-1] -= 1 if d > int(k_digits[i]): remaining = [] for j in range(9): remaining.extend([j+1] * available[j]) remaining.sort() M_part = ''.join(map(str, M + [d] + remaining)) print(M_part) return else: suffix = k_digits[i+1:] temp_available = available.copy() temp_available[d-1] += 1 temp_available[d-1] -= 1 remaining = [] for j in range(9): remaining.extend([j+1] * temp_available[j]) remaining.sort(reverse=True) max_suffix = ''.join(map(str, remaining)) if len(max_suffix) < len(suffix): available[d-1] += 1 continue for c1, c2 in zip(max_suffix, suffix): if c1 > c2: break elif c1 < c2: available[d-1] += 1 break else: if len(max_suffix) > len(suffix): pass else: available[d-1] += 1 continue M.append(d) found = True break available[d-1] += 1 if not found: print(-1) return print(-1) if __name__ == "__main__": main()