public Day16() : base(16, 2020, "Ticket Translation")
        {
            string[] Lines = Input.Split(new string[] { Environment.NewLine + Environment.NewLine },
                                         StringSplitOptions.RemoveEmptyEntries);

            foreach (var rule in Lines[0].SplitByNewline())
            {
                string[] NameAndValue = rule.Split(':');

                IEnumerable <int>[] RangesToSave = new IEnumerable <int> [0];

                foreach (var ValueRange in NameAndValue[1].Split("or"))
                {
                    int[] Range = ValueRange.Split('-').Select(number => Int32.Parse(number)).ToArray();
                    RangesToSave = RangesToSave.Append(Enumerable.Range(Range[0], Range[1] - Range[0] + 1)).ToArray();
                }
                Rules.Add(NameAndValue[0], RangesToSave);
            }

            MyTicket = Lines[1]
                       .SplitByNewline()
                       .Skip(1)
                       .First()
                       .Split(',')
                       .Select(number => Int32.Parse(number))
                       .ToList();

            NearbyTickets = Lines[2]
                            .SplitByNewline()
                            .Skip(1)
                            .Select(ticket => ticket
                                    .Split(',')
                                    .Select(number => Int32.Parse(number))
                                    .ToArray()
                                    )
                            .ToList();

            ValidTickets = new List <int[]>();
        }