




import sys

lowerCAmelCase_						=			(
    '73167176531330624919225119674426574742355349194934'
    '96983520312774506326239578318016984801869478851843'
    '85861560789112949495459501737958331952853208805511'
    '12540698747158523863050715693290963295227443043557'
    '66896648950445244523161731856403098711121722383113'
    '62229893423380308135336276614282806444486645238749'
    '30358907296290491560440772390713810515859307960866'
    '70172427121883998797908792274921901699720888093776'
    '65727333001053367881220235421809751254540594752243'
    '52584907711670556013604839586446706324415722155397'
    '53697817977846174064955149290862569321978468622482'
    '83972241375657056057490261407972968652414535100474'
    '82166370484403199890008895243450658541227588666881'
    '16427171479924442928230863465674813919123162824586'
    '17866458359124566529476545682848912883142607690042'
    '24219022671055626321111109370544217506941658960408'
    '07198403850962455444362981230987879927244284909188'
    '84580156166097919133875499200524063689912560717606'
    '05886116467109405077541002256983155200055935729725'
    '71636269561882670428252483600823257530420752963450'
)






def  snake_case(    __magic_name__   )			->							List[Any]:





     '''simple docstring'''


     lowercase :       Union[str, Any]       =			1
     for digit in s:
          product *= int(SCREAMING_SNAKE_CASE_   )
     return product






def  snake_case(    __magic_name__ = N   )			->							Optional[Any]:





     '''simple docstring'''


     lowercase :       Dict       =			-sys.maxsize - 1
     lowercase :       Union[str, Any]       =			n[:13]
     lowercase :       str       =			13
     while cur_index < len(SCREAMING_SNAKE_CASE_   ) - 13:
          if int(n[cur_index]   ) >= int(substr[0]   ):
               lowercase :       List[Any]       =			substr[1:] + n[cur_index]
               cur_index += 1
          else:
               lowercase :       Any       =			max(SCREAMING_SNAKE_CASE_			,		str_eval(SCREAMING_SNAKE_CASE_   )   )
               lowercase :       List[str]       =			n[cur_index : cur_index + 13]
               cur_index += 13
     return largest_product


if __name__ == "__main__":
 print(f'''{solution() = }''')









def  snake_case(    __magic_name__			,		__magic_name__			,		__magic_name__   )			->							int:





     '''simple docstring'''


     if len(__magic_name__   ) != len(__magic_name__   ):
          raise ValueError('''The length of profit and weight must be same.'''   )
     if max_weight <= 0:
          raise ValueError('''max_weight must greater than zero.'''   )
     if any(p < 0 for p in profit   ):
          raise ValueError('''Profit can not be negative.'''   )
     if any(w < 0 for w in weight   ):
          raise ValueError('''Weight can not be negative.'''   )

     # List created to store profit gained for the 1kg in case of each weight
     # respectively.  Calculate and append profit/weight for each element.
     lowercase :       str       =			[p / w for p, w in zip(__magic_name__			,		__magic_name__   )]

     # Creating a copy of the list and sorting profit/weight in ascending order
     lowercase :       str       =			sorted(__magic_name__   )

     # declaring useful variables
     lowercase :       Union[str, Any]       =			len(__magic_name__   )
     lowercase :       Optional[int]       =			0
     lowercase :       Optional[int]       =			0
     lowercase :       int       =			0

     # loop till the total weight do not reach max limit e.g. 15 kg and till i<length
     while limit <= max_weight and i < length:
          # flag value for encountered greatest element in sorted_profit_by_weight
          lowercase :       Optional[int]       =			sorted_profit_by_weight[length - i - 1]
          lowercase :       Union[str, Any]       =			profit_by_weight.index(__magic_name__   )
          lowercase :       Any       =			-1

          # check if the weight encountered is less than the total weight
          # encountered before.
          if max_weight - limit >= weight[index]:
               limit += weight[index]
               # Adding profit gained for the given weight 1 ===
               # weight[index]/weight[index]
               gain += 1 * profit[index]
          else:
               # Since the weight encountered is greater than limit, therefore take the
               # required number of remaining kgs and calculate profit for it.
               # weight remaining / weight[index]
               gain += (max_weight - limit) / weight[index] * profit[index]
               break
          i += 1
     return gain


if __name__ == "__main__":
 print(
     'Input profits, weights, and then max_weight (all positive ints) separated by '
     'spaces.'
 )

 lowerCAmelCase_						=			[int(x) for x in input('Input profits separated by spaces: ').split()]
 lowerCAmelCase_						=			[int(x) for x in input('Input weights separated by spaces: ').split()]
 lowerCAmelCase_						=			int(input('Max weight allowed: '))

 # Function Call
 calc_profit(profit, weight, max_weight)