input: Write a function that simulates a simple ATM machine. The ATM should be able to create accounts, deposit money, withdraw money, and print the balance of a specified account. The function should be implemented using two classes: `Account` and `ATM`. The `Account` class should have methods to initialize an account with a name and balance, deposit an amount, and withdraw an amount. The `ATM` class should have methods to create an account, deposit money, withdraw money, and print the balance for a specified account. The function should return True if all the operations are successful and False otherwise.
  assert simulate_atm([('create', 'Alice', 1000), ('deposit', 'Alice', 500), ('withdraw', 'Alice', 200), ('print_balance', 'Alice')]) == True
  assert simulate_atm([('create', 'Bob', 500), ('deposit', 'Bob', 100), ('withdraw', 'Bob', 700), ('print_balance', 'Bob')]) == False
  assert simulate_atm([('create', 'Charlie', 200), ('deposit', 'Charlie', 0), ('withdraw', 'Charlie', 0), ('print_balance', 'Charlie')]) == True
  assert simulate_atm([('create', 'Dana', 300), ('deposit', 'Dana', 500), ('withdraw', 'Dana', 200), ('print_balance', 'Dana')]) == True
  assert simulate_atm([('create', 'Eva', 0), ('deposit', 'Eva', 100), ('withdraw', 'Eva', 50), ('print_balance', 'Eva')]) == True
output: def simulate_atm(operations):
      class Account:
          def __init__(self, name, balance):
              self.name = name
              self.balance = balance
          
          def deposit(self, amount):
              self.balance += amount
          
          def withdraw(self, amount):
              if amount > self.balance:
                  return False
              self.balance -= amount
              return True
      
      class ATM:
          def __init__(self):
              self.accounts = {}
          
          def create_account(self, name, balance):
              if name in self.accounts:
                  return False
              self.accounts[name] = Account(name, balance)
              return True
          
          def deposit(self, name, amount):
              if name not in self.accounts:
                  return False
              self.accounts[name].deposit(amount)
              return True
          
          def withdraw(self, name, amount):
              if name not in self.accounts:
                  return False
              return self.accounts[name].withdraw(amount)
          
          def print_balance(self, name):
              if name not in self.accounts:
                  return False
              return True
      
      atm = ATM()
      for op in operations:
          if op[0] == 'create':
              if not atm.create_account(op[1], op[2]):
                  return False
          elif op[0] == 'deposit':
              if not atm.deposit(op[1], op[2]):
                  return False
          elif op[0] == 'withdraw':
              if not atm.withdraw(op[1], op[2]):
                  return False
          elif op[0] == 'print_balance':
              if not atm.print_balance(op[1]):
                  return False
      return True