D's declaration is worthless: were he innocent or guilty he could have said so.
Suppose C was guilty: as he would lie, then B should be the killer, but D would have to be involved too, making three guilty parties; it follows that C was innocent.
Suppose B was innocent: A could be innocent or guilty. If A was innocent, then C would have to be guilty, but we showed C was innocent, so A couldn't be innocent. If A was guilty, since he lied, B and C must have been guilty -- and that's contradictory. As A cannot be either guilty or innocent, B cannot be innocent; he is guilty.
Since B is guilty, A must be innocent, and C must be too (which we had already proved).
We have now that B and D are guilty, but if B was the killer, then D would be innocent (as C said) so B must have been the accomplice, and D the killer.
|