import java.util.*;

class Attivita {
  String nome;
  int durata;
  Attivita(String n, int d) {
    nome = n;
    durata = d;
  }
  public boolean equals(Object o) {
    if (o != null && getClass().equals(o.getClass())) {
      Attivita a = (Attivita)o;
      return nome.equals(a.nome); //Nota il nome solo identifica l'oggetto!!!
    }
    return false;
  }
  //Quanto segue va capito solo dopo avere studiato hashCode()
  public int hashCode() {
    return nome.hashCode();  //cf. equals()!
  }
}

public class ToDo2 {

  // rappresentazione degli oggetti
  private String argomento;
  private Set insattivita;

  // metodi pubblici

  public ToDo2(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) {
    Attivita a = new Attivita(nome,-1);
    return insattivita.contains(a);
  }

  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) {
    insattivita.add(new Attivita(nome,durata));
  }
    

  public void eliminaAttivita(String nome) {
    Attivita a = new Attivita(nome,-1);
    insattivita.remove(a);
  }

  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;
  }

}
