input: from typing import List, Tuple
  
  def compute_output_of_3_layer_network(input_layer: List[float], hidden_layer: List[List[float]], output_layer: List[float]) -> float:
      """Compute the output of a 3-layer artificial neural network.
      The layers are defined as follows:
      - input_layer: A list of float values representing the input layer.
      - hidden_layer: A 2D list of float values representing the hidden layer weights.
      - output_layer: A list of float values representing the output layer weights.
      
      The function computes the output of the network by performing dot products between the layers.
      
      >>> compute_output_of_3_layer_network([2, 3], [[0.1, 0.4], [0.8, 0.6], [0.3, 0.9]], [0.3, 0.7])
      0.9
      """
output:     hidden_output = [sum(a * b for a, b in zip(input_layer, hidden_weights)) for hidden_weights in hidden_layer]
      final_output = sum(a * b for a, b in zip(hidden_output, output_layer))
      return final_output