Автоматический Проверщик Ввода
Тонны и тонны задач на программирование содержат целые числа, разделенные пробелами и новыми строками во входных данных. Во многих случаях количество чисел, найденных внутри файла и в каждой конкретной строке, определяется самими числами.
Более формально, мы определяем описание входных данных как последовательность утверждений следующих типов:
"Первая/следующая строка содержит number неотрицательное целое число(а), variable_1, variable_2, ..., variable_number.". Здесь number — это положительное целое число от 1 до 3, а variable — это произвольные различные имена переменных, которые никогда не появлялись в описании входных данных до этого утверждения. Когда number равно 1, "целое число(а)" следует заменить на "целое число", в противном случае на "целые числа".
"Первая/следующая строка содержит variable целых чисел.". Здесь variable — это имя переменной, которое появилось в этом описании до этого утверждения.
"Первая/следующая строка содержит неотрицательное целое число variable, за которым следуют variable целых чисел.". Здесь variable — это имя переменной, которое никогда не появлялось в описании входных данных до этого утверждения и никогда не появится в описании входных данных после этого утверждения. Обратите внимание, что одно и то же имя переменной повторяется дважды в этом утверждении.
"Первая/следующая строка содержит number целое число(а).". Здесь number — это положительное целое число. Когда number равно 1, "целое число(а)" следует заменить на "целое число", в противном случае на "целые числа".
"Первые/следующие variable строки содержат number целое число(а) в каждой.". Здесь variable — это имя переменной, которое появилось в этом описании до этого утверждения, а number — это положительное целое число. Когда number равно 1, "целое число(а)" следует заменить на "целое число", в противном случае на "целые числа".
"Первые/следующие variable_1 строки содержат variable_2 целых чисел в каждой.". Здесь variable_1 и variable_2 — это (возможно, одинаковые) имена переменных, которые появились в этом описании до этого утверждения.
"Первые/следующие variable_1 строки содержат неотрицательное целое число variable_2, за которым следуют variable_2 целых чисел в каждой.". Здесь variable_1 — это имя переменной, которое появилось в этом описании до этого утверждения. variable_2 — это имя переменной, которое никогда не появлялось в этом описании до этого утверждения и никогда не появится в этом описании после этого утверждения, и отличается от variable_1. Обратите внимание, что, в отличие от всех других переменных, variable_2 может иметь разные значения для каждой строки, описанной этим утверждением. Это полезно, например, для перечисления нескольких куч с различным количеством предметов в каждой куче.
Каждое вхождение "первая/следующая" в приведенных выше утверждениях должно быть заменено на "первая" в первом утверждении описания входных данных и на "следующая" во всех остальных утверждениях.
Дано несколько входных файлов, вам нужно проверить, существует ли описание входных данных, содержащее не более 4 утверждений, которое подходит для большинства данных входных файлов, и выделить входные файлы, которые не соответствуют этому описанию.
Входные данные
Первая строка входного файла содержит целое число n, 1 ≤ n ≤ 10, количество данных входных файлов. Обратите внимание, что значение слова "входной файл" ниже соответствует второму значению этого термина в этом абзаце, а не первому.
Описание каждого данного входного файла начинается со строки, содержащей тире ("-"). Следует фактический данный входной файл, каждая строка которого дополнена восклицательным знаком ("!") для избежания трудностей при обработке пустых строк.
После исключения восклицательного знака в конце, каждая строка каждого данного входного файла будет содержать от 0 до 1000 целых чисел, каждое от -1000 до 1000, разделенных одиночными пробелами. Каждый данный входной файл будет содержать не более 10000 строк и не более 100000 целых чисел.
Выходные данные
Если существует описание входных данных с не более чем 4 утверждениями, описывающее все данные входные файлы, выведите "All good!" (без кавычек) в первую строку выходного файла, за которой следует само описание входных данных, по одному утверждению на строку. Используйте непустые строки длиной не более 10 строчных английских букв для обозначения переменных. Если существует несколько возможных описаний, выведите любое.
Если существует описание входных данных с не более чем 4 утверждениями, описывающее хотя бы один данный входной файл, найдите любое такое описание, которое описывает наибольшее количество данных входных файлов. Выведите "Bad format: numbers." (без кавычек) в первую строку выходного файла, где numbers — это список номеров входных файлов, не соответствующих данному описанию входных данных, разделенных одиночными пробелами. Входные файлы нумеруются от 1 до n в порядке их предоставления. Затем выведите само описание входных данных.
Если ни одно описание входных данных с не более чем 4 утверждениями не подходит ни к одному данному входному файлу, выведите "FAIL." в единственной строке выходного файла.