D shud be the answer.
seq num of first byte = 3500
urg pointer = 45
upto seq number 3500+45 = 3545 data is urgent
which means 3500 to 3545 data is urgent i.e., total 46 bytes
-------------------------------------------------------------------------------------
suppose u are confused between A and D
In option A they are assuming urgent pointer specifies number of bytes that are urgent.
in option D they are assuming urgent pointer specifies upto what sequence number data is urgent.
now suppose you want whole data to be urgent.. in that case, you shud specify 65536 in urg field according to option A. But its not possible to specify the nummber 65536 with just 16 bits. max number u can represent with 16 bits = 65535. so chosing option A would be wrong as you cant specify the whole segment is urgent if u follow A.
option D will serve our purpose by keeping 65535 in urg pointer field