class List2<K,V> {
    K key;
    V value;
    List2<K,V> next;
    
    List2(K k,V v, List2<K,V> rest) {
        key   = k;
        value = v;
        next  = rest;
    }
    V lookup(K k) {
        if (k == key) return value;
        if (next == null) return null;
        return next.lookup(k);
    }
    void update(K k, V v) {
        if (k == key)
            { value = v; return; }
        if (next != null)
            next.update(k,v);
        List2<K,V> l = new List2<K,V>(k, v, null);
        next = l;
    }
}
