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
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.