public int Solve1(string input)
        {
            var(ipRegister, program) = ElfCodeMachine.ParseInputToProgram(input);
            long ip        = 0;
            var  registers = new long[] { 0, 0, 0, 0, 0, 0 };

            while (ip < program.Length)
            {
                registers[ipRegister] = ip;
                ElfCodeMachine.Doop(program[ip], registers);
                ip = registers[ipRegister];
                ip++;
            }

            output.WriteLine($"REGISTERS: {string.Join(";", registers)}");

            return((int)registers[0]);
        }
        private int FindNumberOfInstructionsNeeded(int ipRegister, int[][] program, int maxLoops = 1000)
        {
            var counter = 0;

            long ip        = 0;
            var  registers = new long[] { 0, 0, 0, 0, 0, 0 };

            while (ip < program.Length)
            {
                registers[ipRegister] = ip;
                ElfCodeMachine.Doop(program[ip], registers);
                ip = registers[ipRegister];
                ip++;

                if (counter++ > maxLoops)
                {
                    throw new NoSolutionFoundException();
                }
            }

            return(counter);
        }