input: from typing import List, Tuple
  
  def compute_3_layer_network_output(input_layer: List[float], hidden_layer: List[List[float]], output_layer: List[float]) -> List[float]:
      """ Computes the output of a 3-layer artificial neural network given the input, hidden, and output layers.
      >>> compute_3_layer_network_output([2, 3], [[0.1, 0.4], [0.8, 0.6], [0.3, 0.9]], [0.3, 0.7])
      [2.51]
      """
output:     hidden_output = []
      for neuron in hidden_layer:
          neuron_output = sum(w * x for w, x in zip(neuron, input_layer))
          hidden_output.append(neuron_output)
      
      final_output = []
      for neuron in output_layer:
          neuron_output = sum(w * x for w, x in zip(neuron, hidden_output))
          final_output.append(neuron_output)
      
      return final_output