Either I misunderstand your question or the result set in your example is wrong. When I use a recursive Common Table Expression:
DECLARE @Referrer int;
SET @Referrer = 0;
WITH Referrers AS
(SELECT Cid, fname, lname, emailID, RefID, 0 AS RLevel
FROM dbo.TbMLM_HcsCandidates
WHERE refid = @Referrer
UNION ALL
SELECT c.Cid, c.fname, c.lname, c.emailID, c.RefID, r.Rlevel + 1
FROM dbo.TbMLM_HcsCandidates c JOIN Referrers r ON c.refid = r.Cid)
SELECT Cid, fname, lname, emailID, RefID
FROM Referrers
WHERE RLevel <= 3
ORDER BY Cid;
I get Cids 1, 2, 8, 9 ,and 11 in the result set.