import java.util.ArrayList;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class banking
{
	static ArrayList<Account> accounts = new ArrayList<Account>();
	
	public static void main(String[] args)
	{
	try
	{
		//String[] commands = new String[4];
		
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		String[] newAccounts = new String[2];		
		
		do
		{
		String line = in.readLine();
		int iac = Integer.parseInt(line);

		if (iac == 0) break;
				
		for(int i=0; i<iac; i++)
		{
      newAccounts = in.readLine().split(" ");					
			accounts.add(new Account(newAccounts[0],Double.valueOf(newAccounts[1])));
		}

		String[] commands = new String[4];

		while (!(line = in.readLine()).equals("end"))
		{
			commands = line.split(" ");
			
			if(commands[0].equals("create")) System.out.println(create(commands[1],0));

			if(commands[0].equals("transfer")) 
			{
				Account x = findAccount(commands[1]);
				Account y = findAccount(commands[2]);
				
				if (x!=null && y!=null)	System.out.println(transfer(x, y, Double.valueOf(commands[3])));
					else System.out.println("transfer "+commands[3]+": no such account");
			}
			
			if(commands[0].equals("deposit")) 
			{
				Account x = findAccount(commands[1]);				
				if (x!=null) System.out.println(deposit(x, Double.valueOf(commands[2])));
					else System.out.println("deposit "+commands[2]+": no such account");
			}
			
			if(commands[0].equals("withdraw")) 
			{
				Account x = findAccount(commands[1]);
				if (x != null) System.out.println(withdraw(x, Double.valueOf(commands[2])));
				else System.out.println("withdraw "+commands[2]+": no such account");
			}
		}

		System.out.println("end");
		line = in.readLine();
		System.out.println();
		accounts.clear();
		}
		while(true);

		System.out.println("goodbye");

//		printAccounts();
	}
	catch(Exception e)
	{	System.out.println(e.toString());  }
	}

	private static void printAccounts()
	{
		int count = accounts.size();
		Object[] acc = accounts.toArray();
		Account a;
		for(int i=0;i<count;i++)
		{
			a = (Account)acc[i];
			System.out.println(a.number+" "+a.amount);
		}
	}

	private static String withdraw(Account ac, double am)
	{
		if (ac.amount<am) return("withdraw "+am+": insufficient funds");

		ac.amount -= am;

		return ("withdraw "+am+": ok");
	}

	private static String deposit(Account ac, double am)
	{
		if (!accountExists(ac)) return("deposit "+am+": no such account");		

		ac.amount += am;

		return("deposit "+am+": ok");
	}

	private static String create(String ac, double am)
	{
		if (accountExists(new Account(ac, am))) return("create: already exists");		
		
		accounts.add(new Account(ac, am));
		return("create: ok");
		
	}

	private static String transfer(Account a1, Account a2, double am)
	{
		if (a1.equals(a2)) return("transfer "+am+": same account");		
		if (a1.amount<am) return("transfer "+am+": insufficient funds");
		
		if ((!accountExists(a1)) || (!accountExists(a2))) return("transfer "+am+": no such account");
		
		a1.amount -= am;
		a2.amount += am;
		
		if (a1.number.charAt(5)!=a2.number.charAt(5)) return("transfer "+am+": interbank");
		return("transfer "+am+": ok");
	}

	private static boolean accountExists(Account ac)
	{
		int count = accounts.size();
		Object[] acc = accounts.toArray();
		Account a;		

		for(int i=0; i<count; i++)
		{
			a = (Account)acc[i];
			if (a.number.equals(ac.number)) return(true);
		}

		return(false);
	}

	private static Account findAccount(String num)
	{
		int count = accounts.size();
		Object[] acc = accounts.toArray();
		Account a;

		for(int i=0;i<count;i++)
		{
			a = (Account)acc[i];
			if (a.number.equals(num)) return(a);
		}

		return(null);

	}
}

class Account
{
	public String number = null;
	public double amount;

	public Account(String n, double a)
	{
		number = n;
		amount = a;	
	}
	
}
