The Protein Folding Problem And Its Solutions