#!/usr/bin/env python2.7
import time, sys
import base64
def charseq(start, length):
start = ord(start)
return ''.join(chr(start + i) for i in xrange(length))
b64table = charseq('A', 26) + charseq('a', 26) + charseq('0', 10) + '+/'
def shift_b64(c, offset):
if c == '=': return c
idx = b64table.find(c)
assert idx >= 0
return b64table[(idx + offset) % len(b64table)]
def encode(s, offset=0, maxlen=48):
s = base64.b64encode(s)[:maxlen]
return ''.join(shift_b64(c, offset) for c in s)
def findfixes(offset):
for c in b64table:
c2 = encode(c, offset, 1)
if c2 == c:
yield c
for offset in xrange(64):
print '{:>2} {!r}'.format(offset, list(findfixes(offset)))
#s = '1saddsadsadsa'
#
#for offset in xrange(-3, 3):
# print offset
# for _ in xrange(25):
# s = encode(s, offset)
# print s
# print
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMi43CgppbXBvcnQgdGltZSwgc3lzCmltcG9ydCBiYXNlNjQKCmRlZiBjaGFyc2VxKHN0YXJ0LCBsZW5ndGgpOgogICAgc3RhcnQgPSBvcmQoc3RhcnQpCiAgICByZXR1cm4gJycuam9pbihjaHIoc3RhcnQgKyBpKSBmb3IgaSBpbiB4cmFuZ2UobGVuZ3RoKSkKCmI2NHRhYmxlID0gY2hhcnNlcSgnQScsIDI2KSArIGNoYXJzZXEoJ2EnLCAyNikgKyBjaGFyc2VxKCcwJywgMTApICsgJysvJwoKZGVmIHNoaWZ0X2I2NChjLCBvZmZzZXQpOgogICAgaWYgYyA9PSAnPSc6IHJldHVybiBjIAogICAgaWR4ID0gYjY0dGFibGUuZmluZChjKQogICAgYXNzZXJ0IGlkeCA+PSAwCiAgICByZXR1cm4gYjY0dGFibGVbKGlkeCArIG9mZnNldCkgJSBsZW4oYjY0dGFibGUpXQoKZGVmIGVuY29kZShzLCBvZmZzZXQ9MCwgbWF4bGVuPTQ4KToKICAgIHMgPSBiYXNlNjQuYjY0ZW5jb2RlKHMpWzptYXhsZW5dCiAgICByZXR1cm4gJycuam9pbihzaGlmdF9iNjQoYywgb2Zmc2V0KSBmb3IgYyBpbiBzKQoKCmRlZiBmaW5kZml4ZXMob2Zmc2V0KToKICAgIGZvciBjIGluIGI2NHRhYmxlOgogICAgICAgIGMyID0gZW5jb2RlKGMsIG9mZnNldCwgMSkKICAgICAgICBpZiBjMiA9PSBjOgogICAgICAgICAgICB5aWVsZCBjCgpmb3Igb2Zmc2V0IGluIHhyYW5nZSg2NCk6CiAgICBwcmludCAnezo+Mn0geyFyfScuZm9ybWF0KG9mZnNldCwgbGlzdChmaW5kZml4ZXMob2Zmc2V0KSkpCgoKI3MgPSAnMXNhZGRzYWRzYWRzYScKIwojZm9yIG9mZnNldCBpbiB4cmFuZ2UoLTMsIDMpOgojICAgIHByaW50IG9mZnNldAojICAgIGZvciBfIGluIHhyYW5nZSgyNSk6CiMgICAgICAgIHMgPSBlbmNvZGUocywgb2Zmc2V0KQojICAgICAgICBwcmludCBzCiMgICAgcHJpbnQK
0 ['V']
1 ['W', 'X']
2 ['Y', 'a']
3 ['Z', 'b']
4 ['c', 'd']
5 ['e']
6 ['f']
7 ['g', 'h']
8 ['i']
9 ['j']
10 ['k', 'l']
11 ['m']
12 ['n']
13 ['o', 'p']
14 ['q']
15 ['r']
16 ['s', 't']
17 ['u']
18 ['v']
19 ['w', 'x']
20 ['y']
21 ['z']
22 []
23 []
24 []
25 []
26 []
27 []
28 []
29 []
30 []
31 []
32 []
33 []
34 []
35 []
36 []
37 []
38 []
39 []
40 ['0']
41 ['1']
42 ['2']
43 ['3', '4']
44 ['5']
45 ['6']
46 ['7', '8']
47 ['9']
48 ['A']
49 ['B']
50 ['C', 'D']
51 ['E']
52 ['F', '+', '/']
53 ['G', 'H']
54 ['I']
55 ['J']
56 ['K', 'L']
57 ['M']
58 ['N']
59 ['O', 'P']
60 ['Q']
61 ['R']
62 ['S', 'T']
63 ['U']