How do I add a new layer to the opposite end of a network using add_module()?

Eg: say my internal structure is this

Sequential(
(Conv2D_4): Conv2d(1, 16, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))
(ReLU_4): ReLU()
(Conv2D_5): Conv2d(16, 32, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))
(ReLU_5): ReLU()
)

and I want to add (Conv2D_3): Conv2d(1, 1, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))
to the very first spot instead of the default last spot like so…

Sequential(
(Conv2D_3): Conv2d(1, 1, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))
(Conv2D_4): Conv2d(1, 16, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))
(ReLU_4): ReLU()
(Conv2D_5): Conv2d(16, 32, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))
(ReLU_5): ReLU()
)

How can I achieve this? Should I instead make a new empty sequential, add the layer first then copy over the previous 2 Conv2Ds and 2 ReLUs?

model = nn.Sequential(
          nn.Conv2d(1, 16, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1)),
          nn.ReLU(),
          nn.Conv2d(16, 32, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1)),
          nn.ReLU()
        )

nn.Sequential(
    nn.Conv2d(1, 1, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1)),
    *list(model.modules())[1:]
)


Sequential(
  (0): Conv2d(1, 1, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))
  (1): Conv2d(1, 16, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))
  (2): ReLU()
  (3): Conv2d(16, 32, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))
  (4): ReLU()
)

Thank you this is wonderful.