This challenge is an extension of 'Golf a mutual quine'.
Using three languages of your choice, create a third order Ouroboros program.
That is, in language A, write a program pA which outputs program pB in language B. Program pB should output program pC in language C, which in turn outputs the original program pA in language A.
No two languages in A, B, and C can be the same or subsets or supersets of each other. None of pA, pB or pC may be identical.
For example, a Haskell program outputs a Perl program which outputs a java program which outputs the original Haskell program would be valid.
On the other hand, a C# 4 program which outputs a C# 3 program which outputs a C# 2 program is invalid. Even a Perl -> Ruby -> Bash combination would be invalid if, say, the Perl program and the Ruby program were identical.
This is code golf, so the shortest program pA wins.