In a supermarket, there are two cashiers, one for regular customers, the other one for “fast” customers (i.e. for the ones that have a small number of objects to buy). The supermarket is modeled by the following class: #define SLOW_CASHIER 0 #define FAST_CASHIER 1 class Supermarket { ... public: Supermarket(); int wait_for_paying(int nobjects); void exit_supermarket(int cashier); } sm; The wait_for_paying() takes as input the number of objects to buy. If the number of objects does not exceed 5, then the customer tries to use the fast cashier, otherwise it uses the slow cashier. If the selected cashier is occupied, then it blocks waiting for its turn. However, if the queue on the slow cashier is empty, the slow cashier can exceptionally serve one fast customer from the fast queue. Each customer is modeled by a thread with the following code: void *thread(void *arg) { int cashier; int n = *((int *) arg); //number of objects cashier = sm.wait_for_paying(n); sm.exit_supermarket(cashier); } Write the class internal data structures, the constructor and the two member functions.