def main(): import sys sys.setrecursionlimit(1 << 25) N = int(sys.stdin.readline()) counts = list(map(int, sys.stdin.readline().split())) max_k = 46 for k in range(max_k, -1, -1): mod_value = 1 << k s = str(mod_value) len_s = len(s) if len_s > N: continue elif len_s == N: temp_counts = [0] * 10 for ch in s: d = int(ch) temp_counts[d] += 1 match = True for i in range(1, 10): if temp_counts[i] != counts[i - 1]: match = False break if match: print(k) return else: if can_form_suffix(k, mod_value, counts): print(k) return print(0) def can_form_suffix(k, mod_value, counts): available = counts.copy() def backtrack(pos, remainder): if pos == k: return remainder == 0 for d in range(1, 10): if available[d - 1] == 0: continue available[d - 1] -= 1 new_remainder = (remainder * 10 + d) % mod_value if backtrack(pos + 1, new_remainder): available[d - 1] += 1 return True available[d - 1] += 1 return False return backtrack(0, 0) if __name__ == "__main__": main()