I just solved this by elimination method as B C D are correct.
TCP ensures in order delivery as it ensures the reliable delivery of a packet to other TCP connection.
TCP uses AIMD and Slow start Exponencial Increase Algo for Congestion and if time out occurs then Threshold window is reduced by half so sender window is adjusted if congestion comes into picture.
There is a retransmission timer which starts when a packet is sent. and it is en-queued and if an acknowledgement is received then that packet is de-queued