Decomposition of a relation to 3NF
The original definition of 3NF was "flawed".  Relvars such as yours could perfectly be in 3NF and still have undesirable redundancy.

And the flaw was exactly in cases when there was more than one candidate key.

Which was the very reason why BCNF was introduced, as a "fix" to the "flaw" that was discovered in [the definition of] 3NF.

The thing is, in cases of >1 candidate key, we wouldn't even want designs such as yours to even satisfy 2NF.  Both 2NF and 3NF can be violated only by nonprime attributes.  That is the flaw in their definition.  When the "fix" was applied to 3NF, superseding it with BCNF, the fix itself was flawed because actually what should have happened was to supersede the definition of 2NF with one that didn't limit itself to "nonprime" attributes".