Вращение обращения
В одно время для кодирования информации использовалась довольно упрощенно схема - вращение и перезаписывание символов в алфавите. Одним из таких вариантов была схема ROT13, в которой символы A-Z поворачивались на 13 позиций, причем это была широко используемая небезопасная схема, которая пыталась "скрыть" данные во многих приложениях с конца 1990-х и до начала 2000-х годов.
Задачей Insecure Inc. было создать алгоритм, который бы "улучшил" представленную схему сначала обращением, а затем вращением. Например, применим алгоритм к строке ABCD с обращением и вращением на 1: после обращения получим DCBA, а после вращения на 1 позицию получим EDCB.
Вам следует реализовать указанную схему кодирования для строк, содержащих только заглавные буквы, символы нижнего подчеркивания и точки. Вращения следует производить согласно следующего алфавитного порядка:
ABCDEFGHIJKLMNOPQRSTUVWXYZ_.
Символ нижнего подчеркивания следует за Z, точка следует за нижним подчеркиванием. Вращение вперед на 1 означает что 'A' будет заменено на 'B', то есть 'A' → 'B', 'B' → 'C', ..., 'Z' → ' _ ', ' _ ' → '.' и '.' → 'A'. Точно также поворот на 3 означает 'A' → 'D', 'B' → 'E', ..., '.' → 'C'.
Входные данные
Каждая строка содержит целое число n и строку символов. Число n (1 ≤ n ≤ 27) обозначает количество позиций, на которое происходит вращение вперед. Строка представляет собой сообщение, которое следует закодировать, оно содержит от 1 до 40 символов, среди которых буквы верхнего регистра, нижние подчеркивания и точки. Последняя строка содержит 0 и означает конец входных данных.
Выходные данные
Для каждого теста вывести в отдельной строке "закодированное" сообщение после выполнения вращения и сдвига.