Write a third order quine 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.
Python -&gt; Perl -&gt; Ruby, 48 characters
Adaption of my previous answer. Running
s='print q&lt;puts %%q{s=%r;print s%%s}&gt;';print s%s

with Python generates this Perl snippet
print q&lt;puts %q{s='print q&lt;puts %%q{s=%r;print s%%s}&gt;';print s%s}&gt;

which generates the following Ruby code
puts %q{s='print q&lt;puts %%q{s=%r;print s%%s}&gt;';print s%s}

which then prints the original Python snippet:
diff -s &lt;(ruby &lt;(perl &lt;(python thirdorderquine.py))) thirdorderquine.py 
Files /dev/fd/63 and thirdorderquine.py are identical