Problem:
Search III

Your task is to write a program of a simple dictionary which implements the following instructions:

insert str: insert a string str in to the dictionary

find str: if the distionary contains str, then print 'yes', otherwise print 'no'

Input

In the first line n, the number of instructions is given. In the following n lines, n instructions are given in the above mentioned format.

Output

Print yes or no for each find instruction in a line.

Constraints

A string consists of 'A', 'C', 'G', or 'T'

1 ≤ length of a string ≤ 12

n ≤ 1000000

Sample Input 1

5
insert A
insert T
insert C
find G
find A

Sample Output 1

no
yes

Sample Input 2

13
insert AAA
insert AAC
insert AGA
insert AGG
insert TTT
find AAA
find CCC
find CCC
insert CCC
find CCC
insert T
find TTT
find T

Sample Output 2

yes
no
no
yes
yes
yes

Notes

Template in C

Solution in Scala (judge verdict: Runtime Error)

import scala.io.StdIn.{readInt, readLine}
import scala.reflect.ClassTag
case class Node[A](data: A, var next: Option[Node[A]])
class Dictionary[A](val size: Int)(implicit m: ClassTag[Option[Node[A]]]) {
    val dict: Array[Option[Node[A]]] = m.newArray(size).map(a => None)
    
    def insert(target: A): Unit = {
        val index = target.hashCode % size
        def insert1(node: Option[Node[A]]): Unit = node match {
            case None => dict(index) = Option(new Node[A](target, None))
            case Some(a) => a.next match {
                case None => a.next = Option(new Node[A](target, None))
                case Some(b) if b.data != target => insert1(a.next) 
            }
        }
        insert1(dict(index))
    }
    def find(target: A): Boolean = {
        val index = target.hashCode % size
        def find1(node: Option[Node[A]]): Boolean = node match {
            case None => false
            case Some(a) => if (a.data == target) true else find1(a.next)
        }
        find1(dict(index))
    }
    
}
object Dictionary {
    def apply[A](size: Int): Dictionary[A] = new Dictionary(size)
}
object Main {
    def main(args: Array[String]): Unit = {
        val len = readInt
        val dict = Dictionary[String](len)
        for (i <- (1 to len)) { 
            readLine.split(" ") match {
                case Array("insert", v) => dict.insert(v)
                case Array("find", v) => dict.find(v) match {
                    case true => println("yes")
                    case false => println("no")
                }
            }
        }
    }
}