Write c-programs to solve the following problems. Each program should be written in a separate .c file, which should compile using any C11 compliant compiler. Upload a zipfile containing all the programs at the submissions portal 1. (25 marks) Large integers like 31415926535897932384626433832795028841971693993751 can be represented by a linked list of its digits (with the least significant digit at the beginning of the list). (a) Write a function that reads a positive integer as a character string of decimal digits, and returns a linked list storing the number in the format mentioned above. (b) Write a function to add two large integers in the above format. (c) Write a function to multiply two large integers in the above format. (d) Write a main function which calls the above developed functions to allow users to add and multiply large integers and display the output. 2. (25 marks) A file input.txt stores student records. The first line of the file stores the count n of students. This is followed by n lines, each storing a roll number (a string like 19CS60Z99), the CGPA of the student (a real number like 8.76), and finally the name of the student (may contain spaces). The three fields in each line are separated by one or more spaces (or tabs). Write a program to read the student records, sort the records based on student names, and write the sorted records to a file output.txt in the format Name RollNo CGPA. You may use any sorting algorithm. 3. (25 marks) You are given a list of dates as an array of strings. Write a program to sort the dates chronologically, and print the sorted list. You can use any sorting algorithm. (a) The dates are provided in the EU format DD-MMM-YYYY, like 17-Jul-2019. (b) The dates are provided in the US format MMM DD, YYYY, like Jul 17, 2019. 4. (25 marks) Let n > k > 0 be integers. Write a recursive function to print all the kelement subsets of {1,2, 3, ..., n}. Write the main function which calls the above function after taking n and k as input from the user. It should also print the total number of such subsets that it has printed by counting the number of prints (Do not calculate using a formula)