namespace _3_JediCodeX { using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; class Program { static void Main() { int n = int.Parse(Console.ReadLine()); StringBuilder builder = new StringBuilder(); IDictionary messageDictionary = new Dictionary(); for (int i = 0; i < n; i++) { builder.AppendLine(Console.ReadLine().Trim()); } string namePatternInput = Console.ReadLine().Trim(); string msgPatternInput = Console.ReadLine().Trim(); string namePattern = $"{Regex.Escape(namePatternInput)}([a-zA-Z]{{{namePatternInput.Length}}})(?![a-zA-Z])"; Queue namesQueue = new Queue(); Regex regex = new Regex(namePattern); MatchCollection namesCollection = regex.Matches(builder.ToString()); foreach (Match nameMatch in namesCollection) { namesQueue.Enqueue(nameMatch.Groups[1].Value); } GetTheMessages(builder, msgPatternInput, messageDictionary); int[] indexes = Console.ReadLine() .Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries) .Select(int.Parse) .ToArray(); List result = new List(); foreach (var index in indexes) { if (messageDictionary.ContainsKey(index) && namesQueue.Count > 0) { result.Add(namesQueue.Dequeue() + " - " + messageDictionary[index]); } } Console.WriteLine(string.Join(Environment.NewLine, result)); } private static void GetTheMessages(StringBuilder builder, string msgPatternInput, IDictionary messageDictionary) { string messagePattern = $"{Regex.Escape(msgPatternInput)}([a-zA-Z0-9]{{{msgPatternInput.Length}}})(?![a-zA-Z0-9])"; Regex regex = new Regex(messagePattern); MatchCollection messageCollection = regex.Matches(builder.ToString()); int indexCounter = 1; foreach (Match match in messageCollection) { if (!messageDictionary.ContainsKey(indexCounter)) { messageDictionary[indexCounter] = match.Groups[1].Value; indexCounter++; } } } } }