Although all of the options are important factors to determine social movility, I beleive that one amongst them has more impact. Social class at birth makes a significant difference. It is like a stating point in life, some people start with some advantages (like being born in a wealthy and educated family) and other with disadvantages (being born in a poor family with no access to education).
Although race or ethnicity and gender are important too, they can have a stronger or weaker impact depending of your social class. A person that forms part of a minority, for example, african american, will have a very different life depending on the economic situation of the family.
It is true that hard work and education is also needed but, again, social class can lead you to a more familiar and direct contact with them.