What is the dimension of my output of the form (2n + 1, 2n + 1, #filters) after a MaxPooling layer
The result from applying a max pooling layer with a stride that does not exactly fit to the input will be dependent on the implementation in your library.
Assuming stride 2, and pool size (2,2), in your case the most likely things are:

The result will round up, so you will have a feature map layer with dimensions (11, 11, num_filters) although the right edge pixels will be a max over 2 pixels in the input, and the right bottom corner will just be a copy of the right bottom corner in the input (counting from top left as $(0, 0)$)

It is an error condition for your libary.


If it is not an error, then the max pooling should still perform the task it was intended to. If important features are often at the right or bottom edge, then they may generalise slightly less well, but you probably won't notice a measurable effect.
You could experiment with different sizes of pooling, different strides, or padding the previous convolutional layer so that the max pooling fits exactly. You will have to do something like this if the library has errors when the pooling does not fit exactly. You can test your experiments using cross validation, to see if there is any measurable difference.