Développez un programme qui modélise un système de traitement d’événements multi-niveaux. L’entrée est une séquence de commandes. Chaque commande peut être : 'ADD <niveau> <nom_gestionnaire>' — ajouter un gestionnaire (méthode sans valeur de retour, acceptant une chaîne) au niveau spécifié (entier de 1 à 10) ; 'REMOVE <niveau> <nom_gestionnaire>' — supprimer un gestionnaire d’un niveau ; 'FIRE <niveau> <événement>' — appeler tous les gestionnaires du niveau spécifié avec l’événement donné (une chaîne). Les gestionnaires d’un même niveau sont appelés dans l’ordre d’ajout. Si un gestionnaire portant le même nom existe déjà à ce niveau, il n’est pas ajouté une seconde fois. Lors de la suppression d’un gestionnaire inexistant, rien ne se produit. Les noms des gestionnaires sont composés de lettres latines et de chiffres, jusqu’à 20 caractères. Les événements sont des chaînes arbitraires sans espaces, jusqu’à 100 caractères.
Format d\ entrée
La première ligne contient un entier N (1 ≤ N ≤ 1000) — le nombre de commandes. Ensuite, N lignes de commandes au format : ADD <niveau> <nom_gestionnaire> ou REMOVE <niveau> <nom_gestionnaire> ou FIRE <niveau> <événement>.
Format de sortie
Pour chaque commande FIRE, affichez une ligne contenant les résultats de l’appel de tous les gestionnaires de ce niveau, séparés par un espace, dans l’ordre de leur appel. S’il n’y a aucun gestionnaire à ce niveau, affichez 'NONE'. Chaque gestionnaire affiche sur la console une chaîne de la forme '<nom_gestionnaire>:<événement>'.