Given reference string: 1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6 and 4 frames, simulate: (1) FIFO: count page faults, show final frames, (2) LRU: same, (3) Optimal: same. Compare fault counts. Explain Belady's anomaly (where more frames = more faults) — which algorithm exhibits it? Implement LRU in Python using a list/ordered dict.