1. W pewnej parowozowni istnieje M miejsc remontowych (równocześnie może być naprawianych M lokomotyw). Naprawa taka trwa pewien nieznany, ale skończony okres czasu, po czym lokomotywa opuszcza parowozownię i rozpoczyna się jej normalna eksploatacja. Cykl ten powtarza się. Aby wjechać do parowozowni należy przejechać przez obrotową nastawnię. Do nastawni prowadzą jedynie dwa tory, którymi można wjechać na teren parowozowni. Należy zagwarantować, że nie dojdzie do sytuacji, w której na jednym odcinku toru (2A, 1B, MC) znajdą się 2 lokomotywy, gdyż grozi to zderzeniem. Należy założyć że pracownik obsługujący nastawnię posiada wiedzę, która pozwala mu operować nastawnią w ten sposób, iż wybierane będą, o ile są dostępne, wolne tory prowadzące do parowozowni lub do bram. Co pewien czas w parowozowni musi zostać przeprowadzony remont. Decyzję o tym podejmuje szef robót remontowych. On także decyduje o jego zakończeniu. Dla bezpieczeństwa robotników, w czasie remontu żadna lokomotywa nie może znajdować się na terenie parowozowni. Napisz pseudokod procesów lokomotywy i szefa robót remontowych. Do synchronizacji procesów wykorzystaj semafory uogólnione na których można wykonać operacje opuszczenia semafora S o wartość x P(S, x) i odpowiednio operację podniesienia V(S, x). Procesy oczekujące na semaforze są obsługiwane w losowej, nieznanej z góry kolejności.