import java.io.*;

class LinearStr
{
	String [] table;
	int elems,m;

	// Esta es una función de hash de ejemplo...
	// NO es una buena función de hash
	public int h(String s)
	{
		int v = 0;
		for(int i=0;i<s.length();i++)
			v += s.charAt(i);
		return v;
	}

	public boolean exists(String s)
	{
		if(s.equals("")) return false;
		int ini_pos = h(s)%m;
		int pos = ini_pos;
		if(table[pos] == null) return false;
		if(table[pos].equals(s))
			return true;
		pos = (pos+1)%m;
		while(pos!=ini_pos && table[pos]!=null && !table[pos].equals(s))
			pos = (pos+1)%m;
		if(table[pos]!=null && pos!=ini_pos) return true;
		return false;
	}

	public boolean remove(String s)
	{
		if(s.equals("")) return false;
		int ini_pos = h(s)%m;
		int pos = ini_pos;
		if(table[pos]==null)
			return false;
		if(table[pos].equals(s))
		{
			table[pos]="";
			return true;
		}
		pos = (pos+1)%m;
		while(pos!=ini_pos && table[pos]!=null && !table[pos].equals(s))
			pos = (pos+1)%m;
		if(pos!=ini_pos && table[pos]!=null)
		{
			table[pos] = "";
			return true;
		}
		return false;
	}

	public boolean add(String s)
	{
		if(s.equals("") || exists(s)) return false;
		int ini_pos = h(s)%m;
		int pos = ini_pos;
		if(table[pos]==null || table[pos].equals(""))
		{
			table[pos]=s;
			return true;
		}
		pos = (pos+1)%m;
		while(pos!=ini_pos && table[pos]!=null && !table[pos].equals(""))
		{
			pos = (pos+1)%m;
		} 
		if(pos!=ini_pos)
		{
			table[pos] = s;
			return true;
		}
		return false;
	}

	public String toString()
	{
		String ret="";
		for(int i=0;i<m;i++)
			ret += ("Pos["+i+"]=\""+table[i]+"\"\n");
		return ret;
	}
	
	public LinearStr(int m)
	{
		table = new String[m];
		this.m = m;
		elems = 0;
	}

	public static void main(String [] args) throws Exception
	{
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		System.out.print("Tamano de la tabla: ");
		int m = Integer.parseInt(in.readLine());
		LinearStr t = new LinearStr(m);
		while(true)
		{
			System.out.println("Operaciones: ");
			System.out.println("1.- Insertar");
			System.out.println("2.- Buscar");
			System.out.println("3.- Eliminar");
			System.out.println("4.- Imprimir tabla");
			System.out.println("5.- Salir");
			System.out.print("Op: ");
			int op = Integer.parseInt(in.readLine());
			String pal="";
			if(op != 4 && op!=5)
			{
				System.out.print("Palabra: ");
				pal = in.readLine();
			}
			switch(op)
			{
				case 1: System.out.println(t.add(pal)); break;
				case 2: System.out.println(t.exists(pal)); break;
				case 3: System.out.println(t.remove(pal)); break;
				case 4: System.out.println(t); break;
				case 5: System.exit(0); break;
				default: System.out.println("Mal usuario! :@");
			}
		}
	}
	
}
