1)Write a program that given a 5x5 matrix of positive integers, prints it in a spiral order. For example, if the input is 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 the output should be 11 12 13 14 15 20 25 30 35 34 33 32 31 26 21 16 17 18 19 24 29 28 27 22 23 2)Here is a description of an algorithm called the selection sort that, given an array of n numbers, sorts them in ascending order. 1. Select the minimum value in the array and swap it with the first element. 2. Select the next minimum value in the rest of the array (i.e., ignoring the first element) and swap it with the second element. 3. Do this for n-1 iterations. In the kth iteration, we will have the first (k-1) elements sorted. Find the next minimum value and swap it with the value at the kth location. For example, suppose n = 5 and the input array is: 5 2 1 3 4 First iteration, i.e., k = 1: smallest element from position to n-1 is 1; swap 1 and 5; Array becomes: 1 2 5 3 4 Second iteration, i.e., k = 2: smallest element from position 1 to n-1 is 2; swap 2 and 2; Array becomes: 1 2 5 3 4 Third iteration, i.e., k = 3: smallest element from position 2 to n-1 is 3; swap 3 and 5; Array becomes: 1 2 3 5 4 Fourth iteration, i.e., k = 4: smallest element from position 3 to n-1 is 4; swap 4 and 5; Array becomes: 1 2 3 4 5 Write a program that implements selection sort. The function should print the array contents before each iteration. In the main function, declare an array of size 8; ask the user to enter 8 integers into the array and implement the recursive version of the above sorting technique. Apply the sort function on this array. 3)There is a 20x2 sized board. There are a n pieces of 2x1 sized blocks available. We need to fill the board with these blocks. Write a program to calculate the number of ways in which the board can be filled with these blocks. (Use Recursion)