Implement a simple matrix multiplication program in C or C++. A = A X B matrix multiplication (where A, B, and C are matrices of size N x N with N rows and N columns, and both A and B are initialized with random values). At the end of the program, output to file "How does matrix multiplication work?" See here (https://en.wikipedia.org/wiki/Matrix_multiplication). Calculate C[i][j] (row i, column j) multiplies every element of matrix A by every element of matrix B column j, which is simply three nested loops. At the end of the program, print the execution time (the time taken to compute the matrix multiplication) not including matrix initialization or writing the result to a file. Implement parallel algorithms in C or C++ using the pthread library. Evaluate the program's performance (using execution time as a metric) to assess the speed achieved. The different sizes of the input matrix and reflect the number of threads used in the program - varying from 2 to MAX number of threads. Compare the results with the sequential program.