def main(): import sys N, K = sys.stdin.readline().split() N = int(N) c = list(map(int, sys.stdin.readline().split())) c = [0] + c # c[1] to c[9] if len(K) != N: if len(K) > N: print(-1) return else: digits = [] for d in range(1, 10): digits.extend([str(d)] * c[d]) if not digits or len(digits) != N: print(-1) return digits.sort() print(''.join(digits)) return # Now, handle case when N == len(K) # Precompute frequency array freq = [[0]*10 for _ in range(N+1)] for i in range(N): current_d = int(K[i]) for d in range(1, 10): freq[i+1][d] = freq[i][d] freq[i+1][current_d] += 1 min_candidate = None for i in range(N): current_digit = int(K[i]) available = [c[d] - freq[i][d] for d in range(10)] # Check for digits greater than current_digit found = False for d in range(current_digit + 1, 10): if available[d] > 0: temp_available = available.copy() temp_available[d] -= 1 suffix = [] for digit in range(1, 10): suffix.extend([str(digit)] * temp_available[digit]) if len(suffix) != N - i - 1: continue candidate = K[:i] + str(d) + ''.join(suffix) if (min_candidate is None) or (candidate < min_candidate): min_candidate = candidate found = True break # since we choose smallest d if found: continue # proceed to check other positions if min_candidate is not None: print(min_candidate) else: print(-1) if __name__ == "__main__": main()