Implement the scan algorithm. Use Opencilk as the programing language. You can change the algorithm if needed. 1) Generate an array of N entries of type double, randomly. The values are chosen uniformly at random in the interval [M,M], where M is some positive value that you can choose. The number N of entries in the array is passed as a command line argument. If the command line argument is missing, the default value is N = 106 . 2) Output the prefix sums in an array of type double with the same number of entries. 3) You may choose to parameterize your algorithm by p, the number of processors available, or you can rely on Opencilk to appropriately schedule your parallel processes on the CPU cores available to your machine. 4) After the parallel prefix sum computation is complete, you must verify sequentially, that the prefix sum array is correct, and you must report the result of this verification on the console. 5a) Source code and instructions for compiling 5b) Description of algorithm, Does a small number of processors influence the design of the algorithm 5c) Performance report obtained by using Cilkscale.