operation = input() #操作次数
items = input() #输入序列
#将输入序列转换成列表
items_str = items.split(' ')
items_list = list(map(int, items_str)) #将字符型转换成整型
#创建变量名
sushu = []
yinzi = []
suyinzi = []
suyinzi_final = []

#对输入序列进行第一次分解,判断出哪些是素数,得到所有数的因子
for i in items_list:
    count = 0 #count 统计因子个数(因子不包括1),因此如果一个数只有一个因子,则该因子为其素因子
    for j in range(2,i+1): #因为1不是素因子,所以计算因子时范围不用从1开始
        if i % j == 0:
            yinzi.append(j) #yinzi储存第一次因子拆分
            count += 1
    if count == 1:
        sushu.append(i)
l_sushu = len(sushu) #输入序列中素数的个数

#对因子再次进行拆分,以确认哪些是素因子
for i in yinzi: 
    count = 0 
    for j in range(2,i+1): 
        if i % j == 0:
            count += 1
    if count == 1:
        suyinzi.append(i) #现在suyinzi储存的是输入序列的所有素因子(包括输入序列中的那些素数)

#删除素因子列表中出现在输入序列中的素数
for i in suyinzi:
    if i not in sushu:
        suyinzi_final.append(i)
#如果不删除的话,后续对素因子序列去重排序后,取前operation个数的结果可能导致输入序列中的素数不被选中
#因子,要提前确保素数一定被选中,再从素因子中选数相加
        
l = int(operation) #l是操作次数,即最终应该取出多少个素因子进行相加(每个输入取一个因子)
l_suyinzi = l-l_sushu #如果输入序列中存在素数,则该数必须被取,因此素因子中可以取的数的个数=(总共要取的)-(已确认要取的)
s = slice(l_suyinzi)
final_set = list(set(suyinzi_final))#对素因子进行去重,因为不允许不同的数选相同的因子,那么素因子序列中不可能有重复数
final_set.sort() #对素因子进行由小到大排序
final = final_set[s] + sushu #在排序后final_set中取前l_suyinzi个数(这样求出的是最小值),再加上必须选入的输入序列中的素数

if len(final_set) >= l_suyinzi: #若不存在合法的取法,那么final_set的长度会比l_suyinzi的长度更小,即能取的素因子个数 < 应取的素因子个数
    s = sum(final)
    print(s)
else:
    print(-1)