Please check updated answer above, but even that doesn't match with your answer.

The reason is -

1. I have considered the best case of page tables i.e all the pages are available in consecutive entries of a page table.

2. I have assumed that the outermost page table fits completely in a single page.

Since nothing is mentioned in the question about that.

I tried doing this in worst case, as follows-

Logical address' bits will be paged as- p1 | p2 | p3 | p4 | d = 4 | 10 |10 |10 |14 [uniformly distributing page bits into 4 levels]

We have 3146 pages, so #page tables needed in the fourth level at max=3146 page table [scattering each page entry into different page table]

For 3146 page tables of the fourth level, #page tables needed the in third level at max=3146 page table

For 3146 page tables of the third level, #page tables needed the in the second level at max=3146 page table

Finally at first level, we can have #page tables atmost = 1 page table

Total=3146+3146+3146+1=9439

Memory required by 9439 page tables=9439*2^14=147.48MB

Total memory required by program=48+147.48=195.48MB

Your answer was 3121 *2^16=195.06MB

There is a slight difference in the answers but this is the best I could come up with. However unless mentioned in the question, we should use the best case.