input: from typing import List
  
  
  def manage_models(actions: List[str], names: List[str]) -> List[str]:
      """ Given a list of actions (each action is a string: 'create', 'read', 'update', 'delete')
      and a corresponding list of names, this function will manage a simple ORM-like functionality
      in an in-memory SQLite database. The function should return a list of strings, where each string
      is the result of the corresponding action. For 'read' action, it should return all names in the database.
      For 'create' action, it should return 'Created' if the name was successfully added.
      For 'update' action, it should return 'Updated' if the name was successfully updated.
      For 'delete' action, it should return 'Deleted' if the name was successfully deleted.
      
      >>> manage_models(['create', 'read', 'update', 'delete'], ['Alice', 'Alice', 'Bob', 'Alice'])
      ['Created', [('Alice',)], 'Updated', 'Deleted']
      >>> manage_models(['create', 'create', 'read'], ['Alice', 'Bob', 'Bob'])
      ['Created', 'Created', [('Alice',), ('Bob',)]]
      """
output:     
      from collections import defaultdict
  
      db = defaultdict(list)
      results = []
  
      for action, name in zip(actions, names):
          if action == 'create':
              if name not in db:
                  db[name].append(name)
                  results.append('Created')
              else:
                  results.append('Already exists')
          elif action == 'read':
              results.append(list(db.items()))
          elif action == 'update':
              if name in db:
                  db[name][0] = name
                  results.append('Updated')
              else:
                  results.append('Not found')
          elif action == 'delete':
              if name in db:
                  del db[name]
                  results.append('Deleted')
              else:
                  results.append('Not found')
  
      return results
  