Desenvolva um programa que modela um sistema de processamento de eventos em vários níveis. A entrada é uma sequência de comandos. Cada comando pode ser: 'ADD <nível> <nome_do_manipulador>' — adicionar um manipulador (método sem valor de retorno, que aceita uma string) no nível especificado (número inteiro de 1 a 10); 'REMOVE <nível> <nome_do_manipulador>' — remover um manipulador do nível; 'FIRE <nível> <evento>' — chamar todos os manipuladores do nível especificado com o evento (string) fornecido. Manipuladores no mesmo nível são chamados na ordem de adição. Se um manipulador com o mesmo nome já existir no nível, ele não é adicionado novamente. Ao remover um manipulador inexistente, nada acontece. Nomes de manipuladores consistem em letras latinas e dígitos, com até 20 caracteres. Eventos são strings arbitrárias sem espaços, com até 100 caracteres.
Formato de Entrada
Na primeira linha, um número inteiro N (1 ≤ N ≤ 1000) — quantidade de comandos. Em seguida, N linhas de comandos no formato: ADD <nível> <nome_do_manipulador> ou REMOVE <nível> <nome_do_manipulador> ou FIRE <nível> <evento>.
Formato de Saída
Para cada comando FIRE, imprima uma linha contendo os resultados da chamada de todos os manipuladores do nível, separados por espaço, na ordem em que foram chamados. Se não houver manipuladores no nível, imprima 'NONE'. Cada manipulador exibe no console uma linha no formato '<nome_do_manipulador>:<evento>'.