Towards Accurate Differential Diagnosis with Large Language Models