Witam, dostałem zadanie za które nie mam pojęcia jak się zabrać. treść to ,,Pewien system generuje losowo w czasie rzeczywistym liczby naturalnew zakresie <1, 2000>.Zbuduj mechanizm przechwytywania liczb i liczby parzyste umieść na liście cyklicznej:A natomiastliczby nieparzyste na liście cyklicznej:B.Listy A i B są połączone a elementem łączącym staje się pierwszy,wygenerowany element, który nie należy do listy A lub B. Przechwytywane elementy są automatycznie układane wtakie miejsca listA lub B, aby listytworzyłyzbiór elementów narastających (wg. wartości przechowywanej) zgodnie z kierunkiem wskazówek zegara. Zbudowany program powinien posiadać zaimplementowane następujące funkcjonalności:1.Funkcję print_all(...)–wypisującą wszystkie zawartość listy (wiersz: sąsiad lewy, wartość, sąsiad prawy lub sąsiad lewy, wartość, sąsiad prawy, węzeł);2.Funkcję print_range(int pcount, int dir,...)–która wypisuje pcount elementów z listy w kierunku dir=1 (zgodnie ze wskazówkami zegara), dir = -1 (przeciwnie);3.Funkcję pop(&adr)–która usuwa z listy wskazanyprzez zmiennąadrelement;4.Funkcję push(..., val)–która dodaje na koniec listy element;5.Funkcję insert(..., val, where) –która wstawia do listyelementprzed element o adresie where;6.Funkcję dellist(...)–która usuwa listę z pamięci;7.Funkcję printnode(...)–wypisuje węzły łączące listy;8.Funkcję printlist(cnum) –wypisuje zawartość cnumkręgu. " prosiłbym o objaśnienie i jakiś tok robienia poszczególnych zadań tak żeby to miało ręce i nogi.