// espemyk g-3 o-1

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

/**
 *
 * Denne applikasjonen er skrevet med Java 1.5 og gjør bruk av klassen Scanner
 * som ikke finnes i 1.4.2, og vil dermed ikke kunne kjøres/kompileres på
 * systemer som bruker denne versjonen. Skjønte en stund etter at jeg hadde
 * begynt at denne er løst forferdelig tungvint siden jeg bruker en hashmap
 * for hvert kjønn, men var kommet såpass langt da at jeg bestemte meg for
 * å la det kjøre.
 */

class Oblig1 {
    
    public static void main(String args[]) throws Exception {
        RegisterKontroll r = new RegisterKontroll();
        r.ordrelokke();
    }
    
    
}

class Person {
    
    String kjonn = "";
    String navn = "";
    String mor = "";
    String far = "";
    String ektefelle = "";
    
    String getNavn() {
        return navn;
    }
    
    String getMor() {
        return mor;
    }
    
    String getFar() {
        return far;
    }
    
    String getEktefelle() {
        return ektefelle;
    }
    
    void setMor(String morn) {
        mor = morn;
    }
    
    void setFar(String farn) {
        far = farn;
    }
    
    void setEktefelle(String ekte) {
        ektefelle = ekte;
    }
    
    
}

class Mann extends Person {
    
    HashMap barn = new HashMap();
    
    Mann(String navn, String kjonn, String mor, String far, String ektefelle) {
        if (!mor.equals("?") && mor.equals("")) {
            super.mor = mor;
        }
        if (!far.equals("?") && !far.equals("")) {
            super.far = far;
        }
        super.navn = navn;
        super.ektefelle = ektefelle;
        super.kjonn = kjonn;
    }
    
    void leggTilBarn(String navn) {
        barn.put(navn, navn);
    }
    
    void fjernBarn(String navn) {
        barn.remove(navn);
    }
    
    int antallBarn() {
        int antallBarn = barn.size();
        return antallBarn;
    }
    
    void sjekkBarn(String navn) {
        if (!barn.containsKey(navn)) {
            barn.put(navn, navn);
        }
    }
    
    
}

class Dame extends Person {
    
    String [] barn = new String[10];
    
    Dame(String navn, String kjonn, String mor, String far, String ektefelle) {
        if (!mor.equals("?") && mor.equals("")) {
            super.mor = mor;
        }
        if (!far.equals("?") && far.equals("")) {
            super.far = far;
        }
        super.navn = navn;
        super.ektefelle = ektefelle;
        super.kjonn = kjonn;
    }
    
    void leggTilBarn(String navn) {
        for (int i = 0; i < barn.length; i++){
            if (barn[i] == navn) {
                i = barn.length;
            } else if (barn[i] == null) {
                barn[i] = navn;
                i = barn.length;
            }
        }
    }
    
    void sjekkBarn(String navn) {
        boolean funnet = false;
        for (int i = 0; i < barn.length; i++) {
            if (barn[i].equalsIgnoreCase(navn)) {
                funnet = true;
            }
        }
        if (!funnet) {
            leggTilBarn(navn);
        }
    }
    
    void fjernBarn(String navn) {
        for (int i = 0; i < 10; i++) {
            if (barn[i] != null) {
                if (barn[i].equalsIgnoreCase(navn)) {
                    barn[i] = null;
                }
            }
        }
    }
    
    String[] getBarn() {
        return barn;
    }
    
    int antallBarn() {
        int sumBarn = 0;
        for (int i = 0; i < barn.length; i++) {
            if (barn[i] != null) {
                sumBarn++;
            }
        }
        return sumBarn;
    }
    
    
}

class Register {
    
    HashMap menn = new HashMap();
    HashMap damer = new HashMap();
    Scanner st;
    
    Register() throws Exception {
        st = new Scanner(new File("slekt.data"));
    }
    
    void nyPerson(String navn, String kjonn, String mor, String far, String ektefelle) {
        if (kjonn.equalsIgnoreCase("m")) {
            Mann m = new Mann(navn, kjonn, mor, far, ektefelle);
            menn.put(navn, m);
            settFar(far, navn);
            settMor(mor, navn);
        } else if (kjonn.equalsIgnoreCase("d")) {
            Dame d = new Dame(navn, kjonn, mor, far, ektefelle);
            damer.put(navn, d);
            settFar(far, navn);
            settMor(mor, navn);
        }
    }
    
    void settFar(String far, String navn) {
        Mann m = (Mann) menn.get(far);
        if (m != null) {
            m.leggTilBarn(navn);
        }
    }
    
    void settMor(String mor, String navn) {
        Dame d = (Dame) damer.get(mor);
        if (d != null) {
            d.leggTilBarn(navn);
        }
    }
    
    void fjernFar(String far, String barn) {
        Mann m = (Mann) menn.get(far);
        if (m != null) {
            m.fjernBarn(barn);
        }
    }
    
    void fjernMor(String mor, String barn) {
        Dame d = (Dame) damer.get(mor);
        if (d != null) {
            d.fjernBarn(barn);
        }
    }
    
    // sjekker at barn som har foreldre oppført er registrert hos dem
    void sjekkBarn(String navn) {
        if (menn.containsKey(navn)) {
            Mann m = (Mann) menn.get(navn);
            Mann far = (Mann) menn.get(m.getFar());
            far.sjekkBarn(navn);
            Dame mor = (Dame) damer.get(m.getMor());
            mor.sjekkBarn(navn);
        } else if (damer.containsKey(navn)) {
            Dame d = (Dame) damer.get(navn);
            Mann far = (Mann) menn.get(d.getFar());
            far.sjekkBarn(navn);
            Dame mor = (Dame) damer.get(d.getMor());
            mor.sjekkBarn(navn);
        }
    }
    
    void endreForelder(String navn, String kjonn, String fkjonn, String fnavn) {
        if (kjonn.equalsIgnoreCase("m")) {
            Mann m = (Mann) menn.get(navn);
            if (fkjonn.equalsIgnoreCase("f")) {
                fjernFar(m.getFar(), navn);
                m.setFar(fnavn);
                Mann nyFar = (Mann) menn.get(fnavn);
                nyFar.leggTilBarn(navn);
            } else if (fkjonn.equalsIgnoreCase("m")) {
                fjernMor(m.getMor(), navn);
                m.setMor(fnavn);
                Dame nyMor = (Dame) damer.get(fnavn);
                nyMor.leggTilBarn(navn);
            }
        } else if (kjonn.equalsIgnoreCase("d")) {
            Dame d = (Dame) damer.get(navn);
            if (fkjonn.equalsIgnoreCase("f")) {
                fjernFar(d.getFar(), navn);
                d.setFar(fnavn);
                Mann nyFar = (Mann) menn.get(fnavn);
                nyFar.leggTilBarn(navn);
            } else if (fkjonn.equalsIgnoreCase("m")) {
                fjernMor(d.getMor(), navn);
                d.setMor(fnavn);
                Dame nyMor = (Dame) damer.get(fnavn);
                nyMor.leggTilBarn(navn);
            }
        }
    }
    
    void regEkteskap(String mann, String dame) {
        Mann m = (Mann) menn.get(mann);
        Dame d = (Dame) damer.get(dame);
        String mekte = m.getEktefelle();
        String dekte = d.getEktefelle();
        if (mekte.equalsIgnoreCase("") && dekte.equalsIgnoreCase("")) {
            m.setEktefelle(dame);
            d.setEktefelle(mann);
        }
    }
    
    void regSkilsmisse(String mann, String dame) {
        Mann m = (Mann) menn.get(mann);
        Dame d = (Dame) damer.get(dame);
        String mekte = m.getEktefelle();
        String dekte = d.getEktefelle();
        if (mann.equalsIgnoreCase(dekte) && dame.equalsIgnoreCase(mekte)) {
            m.setEktefelle("");
            d.setEktefelle("");
        }
    }
    
    void tilFil() {
        FileOutputStream out;
        PrintStream p;
        
        Iterator im = menn.values().iterator();
        Iterator id = damer.values().iterator();
        
        try {
            out = new FileOutputStream("slekt.data");
            p = new PrintStream(out);
            
            while (im.hasNext()) {
                Mann m = (Mann) im.next();
                String k = "m";
                p.println(k);
                p.println(m.getNavn());
                p.println(m.getMor());
                p.println(m.getFar());
                p.println(m.getEktefelle());
                Iterator barn = m.barn.values().iterator();
                while (barn.hasNext()) {
                    String barnnavn = (String) barn.next();
                    p.println(barnnavn);
                }
                p.println("-");
            }
            while (id.hasNext()) {
                Dame d = (Dame) id.next();
                String k = "d";
                p.println("d");
                p.println(d.getNavn());
                p.println(d.getMor());
                p.println(d.getFar());
                p.println(d.getEktefelle());
                String [] barn = d.getBarn();
                for (int i = 0; i < barn.length; i++) {
                    if (barn[i] != null) {
                        p.println(barn[i]);
                    }
                }
                p.println("-");
            }
            p.close();
        } catch (Exception e) {
            System.err.println("Det oppsto en feil under skriving til fil");
        }
    }
    
    void fraFil() {
        String kjonn = "";
        String navn = "";
        String mor = "";
        String far = "";
        String ektefelle = "";
        String barnnavn = "";
        
        while (st.hasNextLine()) {
            kjonn = st.nextLine();
            navn = st.nextLine();
            mor = st.nextLine();
            far = st.nextLine();
            ektefelle = st.nextLine();
            nyPerson(navn, kjonn, mor, far, ektefelle);
            if (kjonn.equals("m")) {
                Mann m = (Mann) menn.get(navn);
                while (!st.next().equals("-")) {
                    barnnavn = st.nextLine();
                    m.leggTilBarn(barnnavn);
                }
                st.nextLine();
            } else if (kjonn.equals("d")) {
                Dame d = (Dame) damer.get(navn);
                while (!st.next().equals("-")) {
                    barnnavn = st.nextLine();
                    d.leggTilBarn(barnnavn);
                }
                st.nextLine();
            }
        }
        
        sjekkBarn(navn);
    }
    
    void flestBarn() {
        String navn = "";
        int flestBarn = 0;
        Iterator im = menn.values().iterator();
        Iterator id = damer.values().iterator();
        
        while (im.hasNext()) {
            Mann m = (Mann) im.next();
            int barn = m.antallBarn();
            if (barn > flestBarn) {
                flestBarn = barn;
                navn = m.getNavn();
            }
        }
        while (id.hasNext()) {
            System.out.println("dame");
            Dame d = (Dame) id.next();
            int barn = d.antallBarn();
            if (barn > flestBarn) {
                flestBarn = barn;
                navn = d.getNavn();
            }
        }
        System.out.println("Personen med flest barn er: ");
        System.out.println(navn + " som har " + flestBarn + " barn.");
    }
    
    void skrivSosken(String navn) {
        String [] liste = new String [30];
        int listePlass = 0;
        int teller = 0;
        int i = 0;
        String barn = "";
        System.out.println(navn + " har følgende hel/halvsøsken: ");
        if (menn.containsKey(navn)) {
            Mann m = (Mann) menn.get(navn);
            String farnavn = m.getFar();
            String mornavn = m.getMor();
            
            Mann far = (Mann) menn.get(farnavn);
            if (far != null) {
                Iterator barni = far.barn.values().iterator();
                while (barni.hasNext()) {
                    barn = (String) barni.next();
                    boolean funnet = false;
                    for(i = 0; i <= listePlass; i++) {
                        if (barn.equals(liste[i])) {
                            funnet = true;
                        }
                    }
                    if (!funnet && !navn.equalsIgnoreCase(barn)) {
                        liste[listePlass] = barn;
                        listePlass++;
                    }
                }
            }
            
            Dame mor = (Dame) damer.get(mornavn);
            if (mor != null) {
                String [] barnArray = mor.getBarn();
                for(i = 0; i < barnArray.length; i++) {
                    barn = barnArray[i];
                    boolean funnet = false;
                    for(i = 0; i <= listePlass; i++) {
                        if (navn.equals(liste[i])) {
                            funnet = true;
                        }
                    }
                    if (!funnet) {
                        liste[listePlass] = barn;
                        listePlass++;
                    }
                    teller++;
                }
                
            }
        } else if (damer.containsKey(navn)) {
            Dame d = (Dame) damer.get(navn);
            String farnavn = d.getFar();
            String mornavn = d.getMor();
            
            Mann far = (Mann) menn.get(farnavn);
            if (far != null) {
                Iterator barni = far.barn.values().iterator();
                while (barni.hasNext()) {
                    barn = (String) barni.next();
                    boolean funnet = false;
                    for(i = 0; i <= listePlass; i++) {
                        if (barn.equals(liste[i])) {
                            funnet = true;
                        }
                    }
                    if (!funnet && !navn.equalsIgnoreCase(barn)) {
                        liste[listePlass] = barn;
                        listePlass++;
                    }
                }
            }
            
            Dame mor = (Dame) damer.get(mornavn);
            if (mor != null) {
                String [] barnArray = mor.getBarn();
                for(i = 0; i < barnArray.length; i++) {
                    barn = barnArray[i];
                    boolean funnet = false;
                    for(i = 0; i <= listePlass; i++) {
                        if (navn.equals(liste[i])) {
                            funnet = true;
                        }
                    }
                    if (!funnet) {
                        liste[listePlass] = barn;
                        listePlass++;
                    }
                    teller++;
                }
            }
        }
        for (i = 0; i < liste.length; i++) {
            if (liste[i] != null) {
                System.out.println(liste[i]);
            }
        }
    }
    
    void fetterKusine(String navn1, String navn2) {
        boolean funnet = false;
        String [] p1liste = new String [4];
        String [] p2liste = new String [4];
        if (menn.containsKey(navn1)) {
            Mann person1 = (Mann) menn.get(navn1);
            Mann far1 = (Mann) menn.get(person1.getFar());
            if (far1 != null) {
                p1liste[0] = far1.getFar();
                p1liste[1] = far1.getMor();
            }
            Dame mor1 = (Dame) damer.get(person1.getMor());
            if (mor1 != null) {
                p1liste[2] = mor1.getFar();
                p1liste[3] = mor1.getMor();
            }
        } else if (damer.containsKey(navn1)) {
            Dame person1 = (Dame) damer.get(navn1);
            Mann far1 = (Mann) menn.get(person1.getFar());
            if (far1 != null) {
                p1liste[0] = far1.getFar();
                p1liste[1] = far1.getMor();
            }
            Dame mor1 = (Dame) damer.get(person1.getMor());
            if (mor1 != null) {
                p1liste[2] = mor1.getFar();
                p1liste[3 ] = mor1.getMor();
            }
        }
        if (menn.containsKey(navn2)) {
            Mann person2 = (Mann) menn.get(navn1);
            Mann far1 = (Mann) menn.get(person2.getFar());
            if (far1 != null) {
                p2liste[0] = far1.getFar();
                p2liste[1] = far1.getMor();
            }
            Dame mor1 = (Dame) damer.get(person2.getMor());
            if (mor1 != null) {
                p2liste[2] = mor1.getFar();
                p2liste[3] = mor1.getMor();
            }
        } else if (damer.containsKey(navn2)) {
            Dame person2 = (Dame) damer.get(navn1);
            Mann far1 = (Mann) menn.get(person2.getFar());
            if (far1 != null) {
                p2liste[0] = far1.getFar();
                p2liste[1] = far1.getMor();
            }
            Dame mor1 = (Dame) damer.get(person2.getMor());
            if (mor1 != null) {
                p2liste[3] = mor1.getFar();
                p2liste[4] = mor1.getMor();
            }
        }
        
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 4; j++) {
                if (p1liste[i] != null && p2liste[j] != null) {
                    if (p1liste[i].equalsIgnoreCase(p2liste[j])) {
                        funnet = true;
                    }
                }
            }
        }
        if (funnet) {
            System.out.println("De to er fetter eller kusine.");
        } else {
            System.out.println("De to er ikke fetter eller kusine.");
        }
    }
    
    
}

/**
 *RegisterKontroll tar imot kommandoer fra konsoll og sender de gitte argumentene
 *videre til den aktuelle klassen.
 */
class RegisterKontroll {
    
    Register r;
    RegisterUtsyn u;
    Scanner st;
    
    
    RegisterKontroll() throws Exception {
        r = new Register();
        u = new RegisterUtsyn(r);
        st = new Scanner(System.in);
    }
    
    /** 
     *Tar imot info om person og sender videre til Register. OBS: eventuelle foreldre må registeres først! 
     */
    void nyPerson() {
        System.out.print("Navn: ");
        String navn = (String) st.nextLine();
        System.out.print("Kjønn(m/d): ");
        String kjonn = (String) st.nextLine();
        System.out.print("Mor (? hvis ukjent): ");
        String mor = (String) st.nextLine();
        System.out.print("Far (? hvis ukjent): ");
        String far = (String) st.nextLine();
        System.out.print("Ektefelle(tom hvis ingen): ");
        String ektefelle = (String) st.nextLine();
        r.nyPerson(navn, kjonn, mor, far, ektefelle);
    }
    
    /** 
     *Gir informasjon om den gitte personen 
     */
    void visPerson() {
        System.out.print("Navnet på personen: ");
        String navn = (String) st.nextLine();
        u.finnPerson(navn);
    }
    
    /** 
     *Registerer en ny forelder på personen angitt, samt fjerner info om barnet fra forelderen det var registrert på før 
     */
    void nyFarMor() {
        System.out.print("Navnet på personen hvis forelder du vil registrere/endre: ");
        String navn = (String) st.nextLine();
        System.out.print("Kjønn(m/d): ");
        String kjonn = (String) st.nextLine();
        System.out.print("Endre far eller mor (f/m)? ");
        String fkjonn = (String) st.nextLine();
        System.out.print("Navn på ny forelder: ");
        String fnavn = (String) st.nextLine();
        r.endreForelder(navn, kjonn, fkjonn, fnavn);
    }
    
    /** 
     *Registerer et nytt ekteskap 
     */
    void regEkteskap() {
        System.out.print("Mann: ");
        String mann = (String) st.nextLine();
        System.out.print("Dame: ");
        String dame = (String) st.nextLine();
        r.regEkteskap(mann, dame);
    }
    
    /** 
     *Registrerer eventuelle skilsmisser 
     */
    void regSkilsmisse() {
        System.out.print("Mann: ");
        String mann = (String) st.nextLine();
        System.out.print("Dame: ");
        String dame = (String) st.nextLine();
        r.regSkilsmisse(mann, dame);
    }
    
    /**
     *Skriver ut hvilke søsken en person har 
     */
    void skrivSosken() {
        System.out.print("Navnet på personen: ");
        String navn = (String) st.nextLine();
        u.skrivSosken(navn);
    }
    
    /**
     *Sjekker om 2 gitte personer er fetter/kusine 
     */
    void fetterKusine() {
        System.out.print("Angi 2 personer, adskilt (kun) med komma: ");
        String tonavn = (String) st.nextLine();
        String tmp = "";
        int i1 = 0; int i2 = 1;
        while (!tmp.equals(",")) {
            tmp = tonavn.substring(i1,i2);
            i1++; i2++;
        }
        String navn1 = tonavn.substring(0, i1-1);
        String navn2 = tonavn.substring(i2-1, tonavn.length());
        u.fetterKusine(navn1, navn2);
    }
    
    /**
     *Gir brukeren valg og kjører den bestemte metoden
     */
    void ordrelokke() {
        int valg = 0;
        while(true) {
            System.out.println("\nSlektskapsregister: ");
            System.out.println("0 - avslutt");
            System.out.println("1 - Registrer ny person");
            System.out.println("2 - Vis person");
            System.out.println("3 - Ny far/mor");
            System.out.println("4 - Registrer eksteskap");
            System.out.println("5 - Registrer skilsmisse");
            System.out.println("6 - Til fil");
            System.out.println("7 - Fra fil");
            System.out.println("8 - Flest egne barn:");
            System.out.println("9 - Skriv søsken");
            System.out.println("10 - Fetter/kusine");
            System.out.print("Angi ditt valg: ");
            String tmpvalg = st.nextLine();
            valg = Integer.parseInt(tmpvalg);
            switch (valg) {
                case 0: System.exit(0); break;
                case 1: nyPerson(); break;
                case 2: visPerson(); break;
                case 3: nyFarMor(); break;
                case 4: regEkteskap(); break;
                case 5: regSkilsmisse(); break;
                case 6: r.tilFil(); break;
                case 7: r.fraFil(); break;
                case 8: r.flestBarn(); break;
                case 9: skrivSosken(); break;
                case 10: fetterKusine(); break;
                default: System.out.println("Gi tall mellom 0-10");
            }
        }
    }
    
    
}

class RegisterUtsyn {
    
    Register r;
    
    RegisterUtsyn(Register r) {
        this.r = r;
    }
    
    void finnPerson(String navn) {
        
        if (r.menn.containsKey(navn)) {
            Mann m = (Mann) r.menn.get(navn);
            System.out.println("Navn: " + m.getNavn());
            System.out.println("Kjønn: Mann");
            System.out.println("Mor: " + m.getMor());
            System.out.println("Far: " + m.getFar());
            String ektefelle = m.getEktefelle();
            if (ektefelle != null) {
                System.out.println("Ektefelle: " + ektefelle);
            } else {
                System.out.println("Ingen ektefelle");
            }
            System.out.println("Barn:");
            Iterator it = m.barn.values().iterator();
            while(it.hasNext()) {
                String barn = (String) it.next();
                System.out.println("  -" + barn);
            }
            System.out.println();
        } else if (r.damer.containsKey(navn)) {
            Dame d = (Dame) r.damer.get(navn);
            System.out.println("Navn: " + d.getNavn());
            System.out.println("Kjønn: Dame");
            System.out.println("Mor: " + d.getMor());
            System.out.println("Far: " + d.getFar());
            String ektefelle = d.getEktefelle();
            if (ektefelle != null) {
                System.out.println("Ektefelle: " + ektefelle);
            } else {
                System.out.println("Ingen ektefelle");
            }
            System.out.println("Barn: ");
            String [] barn = d.getBarn();
            for (int i = 0; i < barn.length; i++) {
                if (barn[i] != null) {
                    System.out.println("  -" + barn[i]);
                }
            }
            System.out.println();
        } else {
            System.out.println("Kan ikke finne denne personen.");
        }
    }
    
    
    void flestBarn() {
        String navn = "";
        int flestBarn = 0;
        Iterator im = r.menn.values().iterator();
        Iterator id = r.damer.values().iterator();
        
        while (im.hasNext()) {
            Mann m = (Mann) im.next();
            int barn = m.antallBarn();
            if (barn > flestBarn) {
                flestBarn = barn;
                navn = m.getNavn();
            }
        }
        while (id.hasNext()) {
            System.out.println("dame");
            Dame d = (Dame) id.next();
            int barn = d.antallBarn();
            if (barn > flestBarn) {
                flestBarn = barn;
                navn = d.getNavn();
            }
        }
        System.out.println("Personen med flest barn er: ");
        System.out.println(navn + " som har " + flestBarn + " barn.");
    }
    
    void skrivSosken(String navn) {
        String [] liste = new String [30];
        int listePlass = 0;
        int teller = 0;
        int i = 0;
        String barn = "";
        System.out.println(navn + " har følgende hel/halvsøsken: ");
        if (r.menn.containsKey(navn)) {
            Mann m = (Mann) r.menn.get(navn);
            String farnavn = m.getFar();
            String mornavn = m.getMor();
            
            Mann far = (Mann) r.menn.get(farnavn);
            if (far != null) {
                Iterator barni = far.barn.values().iterator();
                while (barni.hasNext()) {
                    barn = (String) barni.next();
                    boolean funnet = false;
                    for(i = 0; i <= listePlass; i++) {
                        if (barn.equals(liste[i])) {
                            funnet = true;
                        }
                    }
                    if (!funnet && !navn.equalsIgnoreCase(barn)) {
                        liste[listePlass] = barn;
                        listePlass++;
                    }
                }
            }
            
            Dame mor = (Dame) r.damer.get(mornavn);
            if (mor != null) {
                String [] barnArray = mor.getBarn();
                for(i = 0; i < barnArray.length; i++) {
                    barn = barnArray[i];
                    boolean funnet = false;
                    for(i = 0; i <= listePlass; i++) {
                        if (navn.equals(liste[i])) {
                            funnet = true;
                        }
                    }
                    if (!funnet) {
                        liste[listePlass] = barn;
                        listePlass++;
                    }
                    teller++;
                }
                
            }
        } else {
            Dame d = (Dame) r.damer.get(navn);
            String farnavn = d.getFar();
            String mornavn = d.getMor();
            
            Mann far = (Mann) r.menn.get(farnavn);
            if (far != null) {
                Iterator barni = far.barn.values().iterator();
                while (barni.hasNext()) {
                    barn = (String) barni.next();
                    boolean funnet = false;
                    for(i = 0; i <= listePlass; i++) {
                        if (barn.equals(liste[i])) {
                            funnet = true;
                        }
                    }
                    if (!funnet && !navn.equalsIgnoreCase(barn)) {
                        liste[listePlass] = barn;
                        listePlass++;
                    }
                }
            }
            
            Dame mor = (Dame) r.damer.get(mornavn);
            if (mor != null) {
                String [] barnArray = mor.getBarn();
                for(i = 0; i < barnArray.length; i++) {
                    barn = barnArray[i];
                    boolean funnet = false;
                    for(i = 0; i <= listePlass; i++) {
                        if (navn.equals(liste[i])) {
                            funnet = true;
                        }
                    }
                    if (!funnet) {
                        liste[listePlass] = barn;
                        listePlass++;
                    }
                    teller++;
                }
            }
        }
        for (i = 0; i < liste.length; i++) {
            if (liste[i] != null) {
                System.out.println(liste[i]);
            }
        }
    }
    
    void fetterKusine(String navn1, String navn2) {
        boolean funnet = false;
        String [] p1liste = new String [4];
        String [] p2liste = new String [4];
        if (r.menn.containsKey(navn1)) {
            Mann person1 = (Mann) r.menn.get(navn1);
            Mann far1 = (Mann) r.menn.get(person1.getFar());
            if (far1 != null) {
                p1liste[0] = far1.getFar();
                p1liste[1] = far1.getMor();
            }
            Dame mor1 = (Dame) r.damer.get(person1.getMor());
            if (mor1 != null) {
                p1liste[2] = mor1.getFar();
                p1liste[3] = mor1.getMor();
            }
        } else {
            Dame person1 = (Dame) r.damer.get(navn1);
            Mann far1 = (Mann) r.menn.get(person1.getFar());
            if (far1 != null) {
                p1liste[0] = far1.getFar();
                p1liste[1] = far1.getMor();
            }
            Dame mor1 = (Dame) r.damer.get(person1.getMor());
            if (mor1 != null) {
                p1liste[2] = mor1.getFar();
                p1liste[3 ] = mor1.getMor();
            }
        }
        if (r.menn.containsKey(navn2)) {
            Mann person2 = (Mann) r.menn.get(navn1);
            Mann far1 = (Mann) r.menn.get(person2.getFar());
            if (far1 != null) {
                p2liste[0] = far1.getFar();
                p2liste[1] = far1.getMor();
            }
            Dame mor1 = (Dame) r.damer.get(person2.getMor());
            if (mor1 != null) {
                p2liste[2] = mor1.getFar();
                p2liste[3] = mor1.getMor();
            }
        } else {
            Dame person2 = (Dame) r.damer.get(navn1);
            Mann far1 = (Mann) r.menn.get(person2.getFar());
            if (far1 != null) {
                p2liste[0] = far1.getFar();
                p2liste[1] = far1.getMor();
            }
            Dame mor1 = (Dame) r.damer.get(person2.getMor());
            if (mor1 != null) {
                p2liste[3] = mor1.getFar();
                p2liste[4] = mor1.getMor();
            }
        }
        
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 4; j++) {
                if (p1liste[i] != null && p2liste[j] != null) {
                    if (p1liste[i].equalsIgnoreCase(p2liste[j])) {
                        funnet = true;
                    }
                }
            }
        }
        if (funnet) {
            System.out.println("De to er fetter eller kusine.");
        } else {
            System.out.println("De to er ikke fetter eller kusine.");
        }
    }
    
    
}