---------------------------------- 
    | PROBLEMA 16: Insula Logicii      |    
    | PUNCTAJ: 55 Dexteri              |  
    | DEADLINE: Luni, 3 Mai            | 
    | TIMP DE IMPLEMENTARE: 60 minute  | 
    | TIMP DE EXECUTIE: 0.1 sec./test  | 
     ----------------------------------
    
       Aceasta problema s-a dat la un concurs ACM si am intalnit-o la 
    pregatirea pentru ACM faza europeana. Cu toate ca unii dintre voi
    (destul de putini) au facut-o la palat cu Catalin Francu, eu totusi
    o propun spre rezolvare, nu de alta dar la lot la Medias am dat o
    problema de la ACM foarte putin modificata pe care unii (doar de
    Batog am auzit) o vazusera acum vr-un an, dar cu toate astea au luat
    0 puncte. 
    
     vali
    
    Insula Logicii
    
        Insula Logicii are trei tipuri de locuitori: fiinte divine, 
    care spun intotdeauna adevarul, fiinte malefice, care mint
    intotdeauna, si oameni, care spun adevarul ziua si mint noaptea.
    Fiecare locuitor al insulei poate recunoaste tipul oricarui alt
    locuitor. 
        Un sociolog vrea sa viziteze insula. Deoarece el nu poate
    distinge cele trei tipuri de locuitori doar dupa aspect, el iti 
    cere un analizator care sa deduca fapte din conversatiile cu
    locuitorii. Faptele care il intereseaz sunt daca este zi sau noapte
    si de ce tip sunt interlocutorii sai.
        Intrarea se face din fisierul logic.in care contine o 
    conversatie. Fiecare linie a fisierului contine cate o afirmatie
    facuta de un locuitor. Toate liniile incep cu numele
    interlocutorului (care este o litera mare A,B,C,D sau E) urmat de
    ":" si apoi o afirmatie de forma: 
      * Eu [nu] mint.
      * Eu [nu] sunt {divin | om | malefic}.
      * X [nu] minte.
      * X [nu] este {divin | om | malefic}.
      * Este {zi | noapte}.
    
        Cuvintele care sunt cuprinse intre paranteze patrate pot aparea
    sau nu in afirmatie. Dintre cuvintele cuprinse intre acolade, apare
    exact un cuvant in afirmatie. O conversatie poate avea cel mult 50
    afirmatii.
    
        Iesirea se face in fisierul logic.out in care se va scrie tot 
    ceea ce se poate deduce in urmatoarea forma:
      * X este {divin | malefic | om}.
      * Este {zi | noapte}.
        X se inlocuieste cu numele interlocutorului. Faptele trebuie
    date in ordine alfabetica, sortate dupa numele interlocutorilor, 
    iar apoi se spune daca e zi sau noapte.  Daca nu se poate deduce
    nimic se va tipari "Nu se poate deduce nimic.", iar daca conversatia
    nu respecta regulile de mai sus se va tipari "Imposibil.".
    
    Restrictii: 
      * Timpul maxim de rulare pentru fiecare test este de 0.1
        secunde.  
      * Problema va fi testata pe 20 de teste.  
      * Datele de intrare sunt corecte.
    
    Exemple:
    
    Exemplul 1:
    
    logic.in 
    A: Eu sunt divin. 
    
    logic.out 
    Nu se poate deduce nimic.
    
    
    Exemplul 2: 
    
    logic.in  
    A: Eu mint.  
    
    logic.out 
    Imposibil.
    
    
    Exemplul 3:
    
    logic.in  
    A: Eu sunt malefic.  
    
    logic.out
    A este om. 
    Este noapte.  
    
    Exemplul 4: 
    logic.in 
    A: B este om.  
    B: A este malefic. 
    A: B este malefic 
    
    logic.out
    A este malefic. 
    B este divin.
    
    
        Tipuri de rationament:
        Pentru a face lucrurile mai clare va voi explica rationamentul
    in exemplul trei, cand A spune "Eu sunt malefic.". Ce se poate
    deduce din asta ? E evident ca A nu poate fi divin, pentru ca ar
    minti, similar nu poate fi malefic, pentru ca ar spune adevarul.
    Asadar A trebuie sa fie om, si mai mult, deoarece el minte, este
    noapte. In exemplul patru, este evident ca A minte deoarece cele
    doua afirmatii ale lui sunt contradictorii. Deci B nu poate fi nici
    om, nici malefic, deci el este divin. B spune intotdeauna adevarul,
    deci A trebuie sa fie malefic.