import java.util.*;

class Attivita {
  public String nome;
  public int durata;
  public boolean equals(Object o) {
    if (o != null && getClass().equals(o.getClass())) {
      Attivita a = (Attivita)o;
      return nome.equals(a.nome) && durata == a.durata;
    }
    return false;
  }
  //Quanto segue va capito solo dopo avere studiato hashCode()
  public int hashCode() {
    return nome.hashCode() + 31*durata;  //cf. equals()!
  }
}

public class ToDo {

  // rappresentazione degli oggetti
  private String argomento;
  private Set insattivita;

  // metodi pubblici

  public ToDo(String arg) { // realizza la funzionalita crea
    argomento = arg;
    insattivita = new HashSet(); //classe predefinita che implementa Set

  } 
  public String argomento() {
    return argomento;
  }

  public int numAttivita() {
    return insattivita.size();
  }
  
  public boolean presente(String nome) {
    Iterator it = insattivita.iterator();
    while(it.hasNext()) {
      Attivita a = (Attivita)it.next();
      if (a.nome.equals(nome)) return true;
    }
    return false;
  }

  public int durata(String nome) {
    Iterator it = insattivita.iterator();
    while(it.hasNext()) {
      Attivita a = (Attivita)it.next();
      if (a.nome.equals(nome)) return a.durata;
    }
    throw new RuntimeException("Attivita non presente"); 
  }

  public void aggiornaDurata(String nome, int durata) {
    Iterator it = insattivita.iterator();
    while(it.hasNext()) {
      Attivita a = (Attivita)it.next();
      if (a.nome.equals(nome)) a.durata = durata;
    }
    throw new RuntimeException("Attivita non presente"); 
  }    

  public void aggiungiNuovaAttivita(String nome, int durata) {
    Attivita a = new Attivita();
    a.nome = nome;
    a.durata = durata;
    insattivita.add(a);
  }
    

  public void eliminaAttivita(String nome) {
    Iterator it = insattivita.iterator();
    while(it.hasNext()) {
      Attivita a = (Attivita)it.next();
      if (a.nome.equals(nome)) {
        it.remove();
        return;
      }
    }
  }
  public String[] tutteLeAttivita() {
    String[] ris = new String[numAttivita()];
    Object[] ao = insattivita.toArray();
    for(int i = 0; i < ao.length; i++)
      ris[i] = ((Attivita)ao[i]).nome;
    return ris;
  }

}
