If I understand correctly, you have to send out
CC#0 , value 3 (to select bank D).
Bank D will be the default bank untill you send another value for CC#0
(Bank A = value 0, Bank B = 1, Bank C = 2)
Then,
To select patch 400, send out Program Change #16
To select patch 403, send out Program Change #19
Because each bank only has 128 patches, the Program Changes don't correspond with the actual patch number. (400= 3x 128 + 16)
(Haven't tested this, as I don't use bank select commands myself)