static void Main(string[] args)
        {
            BF bf = new BF();
            FF ff = new FF();

            SJF  sjf  = new SJF();
            FCFS fcfs = new FCFS();
            RR   rr   = new RR();

            Process[] proc =
            {
                new Process(1, 245, 25,  0, new int[] { 8, 17 }),
                new Process(2, 365, 10, 13, new int[] {5 }),
                new Process(3, 155, 19, 18, new int[] { 3,11, 16 })
            };
            int quantum = 3;
            int i_o     = 3;

            int[] setBlockSize()
            {
                int[] blockSize = { 365, 245, 140 };
                return(blockSize);
            }

            Console.WriteLine("Processes " + "\t" +
                              " Size " + "\t" +
                              " Incoming Time " + "\t" +
                              " Execution Time" + "\t" +
                              " I/O Request Time List");

            for (int i = 0; i < proc.Length; i++)
            {
                Console.WriteLine(" " + proc[i].pid + "\t\t"
                                  + proc[i].size + "\t\t " + proc[i].it
                                  + "\t\t" + proc[i].et
                                  + "\t\t" + string.Join(",", proc[i].i_o));
            }
            bool isMenu = true;

            while (isMenu)
            {
                Console.WriteLine("***Choose an algorithm***");
                Console.WriteLine("BF (1)");
                Console.WriteLine("FF (2)");
                Console.WriteLine("FCFS (3)");
                Console.WriteLine("RR (4)");
                Console.WriteLine("SJF (5)");
                Console.WriteLine("Exit (e)");

                string menu = Console.ReadLine();

                switch (menu)
                {
                case "1":
                    bf.bestFit(setBlockSize(), setBlockSize().Length, proc, proc.Length);
                    break;

                case "2":
                    ff.firstFit(setBlockSize(), setBlockSize().Length, proc, proc.Length);
                    break;

                case "3":
                    fcfs.findavgTime(proc, proc.Length, i_o);
                    break;

                case "4":
                    rr.findavgTime(proc, quantum, i_o);
                    break;

                case "5":
                    sjf.findavgTime(proc, proc.Length, i_o);
                    break;

                case "e":
                default:
                    isMenu = false;
                    break;
                }
            }
        }