code: def print_upper_triangular_matrix(matrix):
      
  
      # Print column header
      # Assumes first row contains all needed headers
      first = sorted(matrix.keys())[0]
      print('\t', end=' ')
      for i in matrix[first]:
          print('{}\t'.format(i), end=' ')
      print()
  
      indent_count = 0
  
      for i in matrix:
          # Print line header
          print('{}\t'.format(i), end=' ')
  
          if indent_count:
              print('\t' * indent_count, end=' ')
  
          for j in sorted(matrix[i]): # required because dict doesn't guarantee insertion order
              print('{}\t'.format(matrix[i][j]), end=' ')
  
          print()
  
          indent_count = indent_count + 1
docs: Prints a CVRP data dict matrix
      
      Arguments
      ---------
      matrix : dict
          Description
          
      Notes
      -----
      It is assummed that the first row of matrix contains all needed headers.