This program uses threads and synchronization to generate a square matrix with randomly created numbers. Program has four types of threads:
--The Generate Thread will generate a matrix of size 5x5 and fill it with random numbers.
--The Log Thread will get the 5x5 matrix generated by Generate Thread and allocate a bigger matrix to put multiple smaller matrices inside.
--The Mod Thread will get the 5x5 matrix generated by Generate Thread and find modula of each number by the first number in the matrix (the number at the zeroth row and zeroth column).
--The Add Thread will get the output of Mod Thread and find a local sum of 5x5 matrix and update a global sum.