D
考查虚拟语气。这是一个含蓄条件句otherwise="If" there had not been a traffic jam.因为前面是一个过去时,所以这里是表示和过去相反的虚拟语气,主句里面用情态动词+have done.