f | import string | f | import string |
| import sys | | import sys |
| | | |
| class Pairs: | | class Pairs: |
n | __slots__ = '_start' | n | __slots__ = ('_offset',) |
| | | |
n | def __init__(self, N): | n | def __init__(self, initial_value): |
| self._start = N | | self._offset = initial_value |
| | | |
n | def __getattr__(self, name): | n | def __getattr__(self, attribute): |
| if name in string.ascii_letters: | | if attribute in string.ascii_letters: |
| i = string.ascii_letters.index(name) + 1 | | char_index = string.ascii_letters.index(attribute) + 1 |
| l = len(string.ascii_letters) | | alphabet_size = len(string.ascii_letters) |
| val = (self._start + i - 2) % l + 1 | | mapped_value = (self._offset + char_index - 2) % alphabet_si |
| | | ze + 1 |
| return val | | return mapped_value |
| | | |
n | def __setattr__(self, name, val): | n | def __setattr__(self, attribute, value): |
| if name in string.ascii_letters: | | if attribute in string.ascii_letters: |
| i = string.ascii_letters.index(name) + 1 | | char_index = string.ascii_letters.index(attribute) + 1 |
| step = (val - i) % len(string.ascii_letters) | | adjustment = (value - char_index) % len(string.ascii_letters |
| | | ) |
| self._start = 1 + step | | self._offset = 1 + adjustment |
| else: | | else: |
n | super().__setattr__(name, val) | n | super().__setattr__(attribute, value) |
| | | |
| def __str__(self): | | def __str__(self): |
t | l = len(string.ascii_letters) | t | alphabet_size = len(string.ascii_letters) |
| ans = [None] * l | | reordered = [None] * alphabet_size |
| for i, c in enumerate(string.ascii_letters): | | for idx, char in enumerate(string.ascii_letters): |
| val = (self._start + i - 1) % l + 1 | | mapped_position = (self._offset + idx - 1) % alphabet_size + |
| | | 1 |
| ans[val - 1] = c | | reordered[mapped_position - 1] = char |
| return ' '.join(ans) | | return ' '.join(reordered) |
| exec(sys.stdin.read()) | | exec(sys.stdin.read()) |