#Note: in addition to the "official" solutions, I'm giving other, in some
#ways nicer, solutions. Studying them would be nice, but optional.

def is_symmetric(L):
    return L == L[::-1]

def is_symmetric_loop(L):
    for i in range(len(L)//2):
        if L[i] != L[-i-1]:
            return False
    return True


################################################################################

#Official solution

def is_near_symmetric2(L):
    for i in range(len(L)):
        for j in range(i + 1, len(L)):
            L[i], L[j] = L[j], L[i]
            sym = is_symmetric(L)
            L[i], L[j] = L[j], L[i]
            if sym:
                return True
                
    return False        



#A more efficient (but more difficult) version of is_near_symmetric, 
#(thanks to Ben)
def is_near_symmetric(L):
    if is_symmetric(L):
        return True
    for i in range(len(L)//2):
        if L[i] != L[-i-1]:
            break
    remember_i = i
    
    for i in range(remember_i+1, len(L)//2):
        if L[i] != L[-i-1]:
            if L[i] == L[remember_i]:
                L[-i-1], L[remember_i] = L[remember_i], L[-i-1]
            elif L[-i-1] == L[remember_i]:
                L[i], L[remember_i] = L[remember_i], L[i]
            else:
                L[i], L[len(L)//2] = L[len(L)//2], L[i]
            return is_symmetric(L)
                
            
    return False


#A quick program to verify that both functions return the same thing
for i in range(3):
    for j in range(3):
        for k  in range(3):
            for l in range(3):
                for m in range(3):
                    for n in range(3):
                        L = [i, j, k, l, m, n]
                        if s2(L[:]) != is_near_symmetric(L[:]):
                            print(L, is_near_symmetric2(L[:]), is_near_symmetric(L[:]))
                            
                        L = [i, j, k, l, m]
                        if s2(L[:]) != is_near_symmetric(L[:]):
                            print(L, is_near_symmetric2(L[:]), is_near_symmetric(L[:]))

################################################################################

#Official solution            

def sum8_0(L):
    for i0 in [0, 1]:
        for i1 in [0, 1]:
            for i2 in [0, 1]:
                for i3 in [0, 1]:
                    for i4 in [0, 1]:
                        for i5 in [0, 1]:
                            for i6 in [0, 1]:
                                for i7 in [0, 1]:
                                    if i0 + i1 + i2 + i3 + i4 + i5 + \
                                       i6 + i7 == 0:
                                           continue
                                    s = i0*L[0] + i1*L[1] + i2*L[2] + \
                                        i3*L[3] + i4*L[4] + i5*L[5] + \
                                        i6*L[6] + i7*L[7]
                                        
                                    if s == 0:
                                        return True
    return False
    
    
sum8_0([10, 1, 2, 3, 4, 5, -6, 7])



                                    
    
    
#A nicer, but more difficult, version (thanks to Susanna)

def sumn_0(L):
    sums = [0]
    #sums[1:] is all the sums
    for e in L:
        new_sums = []
        for s in sums:
            new_sums.append(s + e)
        sums.extend(new_sums)
            
    return 0 in sums[1:]

sumn_0([4, 1, 1, 2, 10, -12])


#A recursive solution, to be covered in a few weeks:
def is_subset_sum(L, target = 0):
    if len(L) == 0:
        return False
    if L[0] == target:
        return True
    return is_subset_sum(L[1:], target) or is_subset_sum(L[1:], target-L[0])


#How about the version that will give you carpal tunnel synrdome? Let's generate
#it! (Without using advanced tools...)

program = "def auto_sum_0(L):\n"
for i in range(n):
    for i0 in [0, 1]:
        for i1 in [0, 1]:
            for i2 in [0, 1]:
                for i3 in [0, 1]:
                    for i4 in [0, 1]:
                        for i5 in [0, 1]:
                            for i6 in [0, 1]:
                                for i7 in [0, 1]:
                                    elem_on = [i0, i1, i2, i3, i4, i5, i6, i7]
                                    if sum(elem_on) == 0:
                                        continue
                                    sum_str = ""
                                    for i in range(8):
                                        if elem_on[i] == 1:
                                            sum_str += "L[%d] + " % (i)
                                    
                                    sum_str += "0" 
                                    program += "  if %s == 0:\n    return True\n" % (sum_str)
program += "  return False"
                             
exec(program)

auto_sum_0([4, 1, 1, 2, 10, 50, 7, 8])


print(program)

##Output:
# In [110]: print(program)
# def auto_sum_0(L):
#   if L[7] + 0 == 0:
#     return True
#   if L[6] + 0 == 0:
#     return True
#   if L[6] + L[7] + 0 == 0:
#     return True
#   if L[5] + 0 == 0:
#     return True
#   if L[5] + L[7] + 0 == 0:
#     return True
#   if L[5] + L[6] + 0 == 0:
#     return True
#   if L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[4] + 0 == 0:
#     return True
#   if L[4] + L[7] + 0 == 0:
#     return True
#   if L[4] + L[6] + 0 == 0:
#     return True
#   if L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[4] + L[5] + 0 == 0:
#     return True
#   if L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[3] + 0 == 0:
#     return True
#   if L[3] + L[7] + 0 == 0:
#     return True
#   if L[3] + L[6] + 0 == 0:
#     return True
#   if L[3] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[3] + L[5] + 0 == 0:
#     return True
#   if L[3] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[3] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[3] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[3] + L[4] + 0 == 0:
#     return True
#   if L[3] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[3] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[3] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[3] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[3] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[3] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[3] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[2] + 0 == 0:
#     return True
#   if L[2] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[6] + 0 == 0:
#     return True
#   if L[2] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[5] + 0 == 0:
#     return True
#   if L[2] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[2] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[4] + 0 == 0:
#     return True
#   if L[2] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[2] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[2] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[2] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[3] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[6] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[5] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[4] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + 0 == 0:
#     return True
#   if L[1] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[5] + 0 == 0:
#     return True
#   if L[1] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[4] + 0 == 0:
#     return True
#   if L[1] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[1] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[3] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[5] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[4] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[5] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[4] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[5] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[4] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + 0 == 0:
#     return True
#   if L[0] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[4] + 0 == 0:
#     return True
#   if L[0] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[3] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[4] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[4] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[4] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[4] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[4] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[4] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[4] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[7] + 0 == 0:
#     return True
#   if L[6] + 0 == 0:
#     return True
#   if L[6] + L[7] + 0 == 0:
#     return True
#   if L[5] + 0 == 0:
#     return True
#   if L[5] + L[7] + 0 == 0:
#     return True
#   if L[5] + L[6] + 0 == 0:
#     return True
#   if L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[4] + 0 == 0:
#     return True
#   if L[4] + L[7] + 0 == 0:
#     return True
#   if L[4] + L[6] + 0 == 0:
#     return True
#   if L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[4] + L[5] + 0 == 0:
#     return True
#   if L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[3] + 0 == 0:
#     return True
#   if L[3] + L[7] + 0 == 0:
#     return True
#   if L[3] + L[6] + 0 == 0:
#     return True
#   if L[3] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[3] + L[5] + 0 == 0:
#     return True
#   if L[3] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[3] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[3] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[3] + L[4] + 0 == 0:
#     return True
#   if L[3] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[3] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[3] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[3] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[3] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[3] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[3] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[2] + 0 == 0:
#     return True
#   if L[2] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[6] + 0 == 0:
#     return True
#   if L[2] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[5] + 0 == 0:
#     return True
#   if L[2] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[2] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[4] + 0 == 0:
#     return True
#   if L[2] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[2] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[2] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[2] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[3] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[6] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[5] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[4] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[2] + L[3] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + 0 == 0:
#     return True
#   if L[1] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[5] + 0 == 0:
#     return True
#   if L[1] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[4] + 0 == 0:
#     return True
#   if L[1] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[1] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[3] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[5] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[4] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[3] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[5] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[4] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[5] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[4] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[1] + L[2] + L[3] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + 0 == 0:
#     return True
#   if L[0] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[4] + 0 == 0:
#     return True
#   if L[0] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[3] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[4] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[3] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[4] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[4] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[2] + L[3] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[4] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[4] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[3] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[4] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[4] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[4] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[4] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[4] + L[6] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[4] + L[5] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[4] + L[5] + L[7] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[4] + L[5] + L[6] + 0 == 0:
#     return True
#   if L[0] + L[1] + L[2] + L[3] + L[4] + L[5] + L[6] + L[7] + 0 == 0:
#     return True
#   return False                                        
    




