from itertools import accumulate def main(): N, M, W = map(int, input().split()) A = sorted(map(int, input().split()), reverse=True) B = list(map(int, input().split())) C = list(map(int, input().split())) A_accum = list(accumulate(A, initial=0)) max_value = 0 for bit in range(2**M): tmp_bit = bit idx = 0 Y_weight_sum = 0 Y_value_sum = 0 while tmp_bit > 0: if tmp_bit & 1: Y_weight_sum += B[idx] Y_value_sum += C[idx] idx += 1 tmp_bit >>= 1 if Y_weight_sum > W: continue max_value = max( max_value, Y_value_sum + A_accum[min(W - Y_weight_sum, N)] ) print(max_value) if __name__ == "__main__": main()