
import java.io.*;
import java.util.*;
import java.util.regex.*;

public class banking
{
	public static final String DEPOSIT = "deposit";
	public static final String WITHDRAW = "withdraw";
	public static final String CREATE = "create";
	public static final String TRANSFER = "transfer";
	public static final String END = "end";
public static void main(String[] args)
{
	int accCount=0;
	HashMap<String,Double> accounts = new HashMap<String,Double>();
	
	try
	{	
		Scanner input = new Scanner(System.in);
		accCount = input.nextInt();
		while(accCount != 0)
		{
		for (int i=0; i<accCount; i++)
		{
			String accId = input.next();
			accounts.put(accId, new Double(input.next()));		
		}
		
		String cmd = input.next();
		while (!cmd.equals(END))
		{
			if (cmd.equals(DEPOSIT))
			{
				String accId = input.next();
				Double amount = new Double(input.nextDouble());
				if (accounts.containsKey(accId))
				{
					accounts.put(accId,amount+accounts.get(accId));
					System.out.print(DEPOSIT+" ");
					System.out.format("%.2f",amount);
					System.out.println(": ok");
				}
				else
				{
					System.out.print(DEPOSIT+" ");
					System.out.format("%.2f",amount);
					System.out.println(": no such account");
				}
			} 
			else if (cmd.equals(WITHDRAW))
			{
				String accId = input.next();
				Double amount = new Double(input.nextDouble());
				if (accounts.containsKey(accId))
				{
					Double actAmount = accounts.get(accId);
					System.out.print(WITHDRAW+" ");
					System.out.format("%.2f",amount);
					if (actAmount < amount)
					{
						System.out.println(": insufficient funds");
					}
					else
					{
						accounts.put(accId,actAmount-amount);
						System.out.println(": ok");
					}
				}
				else
				{
					System.out.print(WITHDRAW+" ");
					System.out.format("%.2f",amount);
					System.out.println(": no such account");
				}
			}
			else if (cmd.equals(TRANSFER))
			{
				String accIdFrom = input.next();
				String accIdTo = input.next();
				Double amount = new Double(input.nextDouble());
				
				System.out.print(TRANSFER+" ");
				System.out.format("%.2f",amount);
				
				if (accIdFrom.equals(accIdTo))
				{
					System.out.println(": same account");
				}
				else if ((!accounts.containsKey(accIdFrom))||(!accounts.containsKey(accIdTo)))
				{
					System.out.println(": no such account");
				}
				else
				{
					Double actAmount = accounts.get(accIdFrom);
					if (actAmount < amount)
					{
						System.out.println(": insufficient funds");
					}
					else
					{
						accounts.put(accIdFrom,actAmount-amount);
						accounts.put(accIdTo,amount+accounts.get(accIdTo));
						
						String bankFrom = accIdFrom.substring(accIdFrom.indexOf("/")+1);
						String bankTo = accIdTo.substring(accIdTo.indexOf("/")+1);
						//System.out.println("bankFrom: "+ bankFrom+"; bankTo: "+ bankTo);
						if (!bankFrom.equals(bankTo)) System.out.println(": interbank");
						else System.out.println(": ok");
					}
				}
				
			}
			else if (cmd.equals(CREATE))
			{
				String newAccId = input.next();
				if (accounts.containsKey(newAccId))
				{
					System.out.println(CREATE + ": already exists");
				}
				else
				{
					accounts.put(newAccId, new Double(0));
					System.out.println(CREATE + ": ok");
				}	
			}
			
			cmd = input.next();
		}
		
		// System.out.println(accounts);		
		System.out.println(END);
		System.out.println("");
		accCount = input.nextInt();
			accounts.clear();
		}
		System.out.println("goodbye");
	} catch(Exception ex)
	{
		ex.printStackTrace();
	}
}

}
